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 函数修改先前连接信号的插槽参数

强制 Qt 使用 ip4 而不是 ip6 连接?

在 Qt 中使用 QNetworkAccessManager 的持久连接

Qt - 获取数据并通过串行连接转发它们

Qt按钮连接错误,Visual Studio 2017

Qt连接两个信号和一个插槽