Qt连接尝试使用父类

时间:2015-11-19 23:38:47

标签: c++ qt qobject

当我运行我的Qt程序时,我收到了这个通知:

QObject::connect: No such slot SbSetting::checkbox_stateChanged(int)
QObject::connect:  (sender name:   'cbEnableRetries')

输出正确,没有任何插槽SbSetting::checkbox_stateChanged(int)。但这不是我想要连接的东西。

我有一个SbSetting类。它不是顶级类,但我认为更高级别是无关紧要的(它是一个QObject。)。然后我有类IoRetrySetting,它继承自SbSetting(class IoRetrySetting : public SbSetting)。这是IoRetrySetting的样子。

IoRetrySetting::IoRetrySetting([...],
                               QCheckBox *cb,
                               [...])
    : checkbox(cb),
      SbSetting([...])
{
    if(!cb)
        new std::invalid_argument("cb cannot be null");

    connect(cb, SIGNAL(stateChanged(int)),
            this, SLOT(checkbox_stateChanged(int))); // <------  FAILS HERE
}

void IoRetrySetting::checkbox_stateChanged(int state)
{
    //...
}

为什么Qt在调用connect时会查看父类?为什么不连接到IoRetrySetting::checkbox_stateChanged(int)

1 个答案:

答案 0 :(得分:0)

我忘记了Q_OBJECT我的班级宣言。另见:https://forum.qt.io/topic/54289/qobject-connect-no-such-slot-qwidget-showtimee