c++ - QObject::connect 无匹配函数

标签 c++ qt connection qobject

chip_definition/Isrc/NLBChipDefinitionEditor.C:20: error: no matching function for call to `nlb::gui::chip_definition::ChipDefinitionEditor::connect(QAction*, const char*, nlb::gui::chip_definition::ChipDefinitionEditor* const, const char*)'

我从代码中得到这个错误:

   qDebug() << dynamic_cast<QObject*>(this);
    connect(m_engine->actionRegister().actionAt(nlb::gui::base::ACTION_ID_CONTEXT_REMOVE_CHIP), SIGNAL(triggered(bool)), this, SLOT(onRemoveSelectedChips()));

错误指出 this(ChipDefinitionEditor*) 不是 QObject*dynamic_castconnect 是评论。 ChipDefinitionEditor 当然是从 QObject 派生的。怎么会这样?

最佳答案

Qt 期望connect 的参数是QObject* 类型。给出这种形式的错误:

no matching function for call to `connect(SOMETYPE*, const char*, 
                                          SOMEOTHERTYPE*, const char*)'

编译器隐含地声明它没有信息表明 SOMETYPESOMEOTHERTYPE 是一个 QObject 给出了包含的内容那个翻译单位。通常,只需包含 SOMETYPE/SOMEOTHERTYPE 的头文件即可为编译器提供确定 SOMETYPE/SOMEOTHERTYPE< 所需的内容 继承自 QObject。在其他情况下(例如您的情况),您需要确保 SOMETYPE/SOMEOTHERTYPE 已动态转换为 QObject

还值得注意的是,当编译器对一种类型有足够的信息但对另一种类型没有足够的信息时,错误消息会略有变化。例如,如果您修复了 SOMETYPE 而不是 SOMEOTHERTYPE 的错误,则错误消息会略有变化:

no matching function for call to `connect(QObject*, const char*, 
                                          SOMEOTHERTYPE*, const char*)'

关于c++ - QObject::connect 无匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174391/

相关文章:

c++ - 有没有免费且最新的 Linux 编程(C/C++/GNU)电子书?

c++ - Qt通过代码关闭一个正在运行的窗口

c++ - QMessageLogger 魔法是如何工作的?

oracle - Oracle中的连接池大小概念

angular - ionic : check if the device has a connection

c++ - C/C++ 编译器如何为某些 C 函数调用自动推断数组长度?

c++ - 模板异构类型的集合

c++ - 模板中的未知返回类型

qt - 死 QML 元素接收信号?

Android 2.1蓝牙SPP转LM058(串口线更换)问题