[英]Qt slots and inheritance: why is my program trying to connect to the parent instead of the child class?
[英]Qt connect trying to use parent class
当我运行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)
{
//...
}
为什么在我调用connect时Qt在父类中查找? 为什么不连接到IoRetrySetting::checkbox_stateChanged(int)
?
我忘记了对类声明的Q_OBJECT
。 另请参阅: https : //forum.qt.io/topic/54289/qobject-connect-no-such-slot-qwidget-showtimee
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.