当我运行我的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)
?
答案 0 :(得分:0)
我忘记了Q_OBJECT
我的班级宣言。另见:https://forum.qt.io/topic/54289/qobject-connect-no-such-slot-qwidget-showtimee