QObject::connect no matching function

QObject::connect no matching function

本文关键字:function matching connect QObject no      更新时间:2023-10-16
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_cast在注释connect时强制转换为ok。ChipDefinitionEditor当然是从QObject衍生出来的。这是怎么发生的?

Qt期望connect的参数类型为QObject*。给出如下形式的错误:

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

编译器隐式地声明它没有显示SOMETYPESOMEOTHERTYPEQObject的信息,给定该翻译单元包含的内容。通常,只要包含SOMETYPE/SOMEOTHERTYPE的头文件,编译器就可以确定SOMETYPE/SOMEOTHERTYPE是从QObject继承的。在其他情况下(例如您的情况),您需要确保SOMETYPE/SOMEOTHERTYPE已被动态转换为QObject

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

no matching function for call to `connect(QObject*, const char*, 
                                          SOMEOTHERTYPE*, const char*)'
相关文章: