Qt连接尝试使用父类
Posted
技术标签:
【中文标题】Qt连接尝试使用父类【英文标题】:Qt connect trying to use parent class 【发布时间】:2015-11-19 23:38:47 【问题描述】:当我运行我的 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)
?
【问题讨论】:
【参考方案1】:我忘记Q_OBJECT
我的班级声明。另见:https://forum.qt.io/topic/54289/qobject-connect-no-such-slot-qwidget-showtimee
【讨论】:
以上是关于Qt连接尝试使用父类的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 使用 lambda 函数修改先前连接信号的插槽参数