You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt中QObject::connect报错:无法调用无对象的成员函数

解决Qt信号槽连接错误:"cannot call a member function without object*"

你遇到的错误核心问题是:在调用QObject::connect时,错误地给信号和槽函数加了括号,导致代码试图直接调用函数,而非传递函数指针。

错误写法

QObject::connect(casilla,&customButton::hovered(),this,&board::mostrarCasilla());

正确写法

QObject::connect(casilla, &customButton::hovered, this, &board::mostrarCasilla);

原因说明

Qt新式信号槽语法要求传递函数指针,而非执行函数调用。&customButton::hovered()会尝试触发信号函数(但信号本身不允许手动调用),正确的写法是去掉括号,直接使用函数名获取指针;槽函数同理。

完整代码示例(修正后)

容器类头文件:

#include <QObject>
#include "customButton.h"

class board : public QObject
{
    Q_OBJECT
public:
    explicit board(QObject *parent = nullptr) : QObject(parent) {
        casilla = new customButton;
        // 修正后的信号槽连接
        QObject::connect(casilla, &customButton::hovered, this, &board::mostrarCasilla);
    }

signals:
    void hovered(); // 注:此为board类自身的信号,若无需转发可删除,避免与customButton的信号混淆

public slots:
    void mostrarCasilla();

private:
    customButton* casilla; // 建议将成员变量放在private区域,提升封装性
};

额外注意:确保customButton类正确继承QObject并添加Q_OBJECT宏,否则信号槽机制无法正常工作。

内容的提问来源于stack exchange,提问作者Juan Antonio Miralles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:57:05