QT Creator - 删除元素的“没有匹配的信号”

Posted

技术标签:

【中文标题】QT Creator - 删除元素的“没有匹配的信号”【英文标题】:QT Creator - "No matching signal for" with deleted elements 【发布时间】:2020-12-12 02:27:32 【问题描述】:

我收到了这些警告消息,但我删除了它警告我的对象。我很困惑为什么它不断地提出这些信息。此外,这导致了一个错误,我为按钮指定了一个信号,但它没有执行其功能(如果按下它,我什至设置了一个调试日志消息)。

在我的 moc_mainwindow.cpp 文件中,我注意到这些代码行:

static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = 

    QT_MOC_LITERAL(0, 0, 10), // "MainWindow"
    QT_MOC_LITERAL(1, 11, 22), // "on_radioButton_clicked"
    QT_MOC_LITERAL(2, 34, 0), // ""
    QT_MOC_LITERAL(3, 35, 26), // "on_exitRadioButton_clicked"
    QT_MOC_LITERAL(4, 62, 21), // "on_pushButton_clicked"
    QT_MOC_LITERAL(5, 84, 18) // "on_exitBtn_clicked"

,
"MainWindow\0on_radioButton_clicked\0\0"
"on_exitRadioButton_clicked\0"
"on_pushButton_clicked\0on_exitBtn_clicked"
;

这可能与警告消息有关:

QMetaObject::connectSlotsByName: on_radioButton_clicked() 没有匹配的信号 QMetaObject::connectSlotsByName:on_exitRadioButton_clicked() 没有匹配信号 QMetaObject::connectSlotsByName: on_pushButton_clicked() 没有匹配信号

任何帮助都将不胜感激 :)

【问题讨论】:

clean -> run qmake -> rebuild 有帮助吗? 不,如果有的话,它回溯了一些进展 这些插槽是否存在:on_radioButton_clickedon_exitRadioButton_clickedon_pushButton_clicked 【参考方案1】:

您需要删除构建文件夹(整个内容),然后重新构建项目。我建议用 Ninja 切换到 cmake - 它不会有这样的问题。

您在 UI 文件中有过时的信号/插槽连接 - .ui.h 标头是调用 connectSlotsByName 的位置。因此,只需 Greg 整个源文件夹中的信号名称(Qt Creator 中的 Ctrl-Shift-F),包括所有文件类型,您可能会在 .ui Xml 文件的连接元素中找到这些名称。它们可以从那里手动删除,或者使用 Qt Creator 中内置的设计器。

删除构建文件夹是起点 - 你不能拥有任何旧状态,而我上次检查时 IDE 中的“清理”选项并没有这样做。

【讨论】:

【参考方案2】:

所以经过一番挖掘后,我发现了这个问题。似乎它不会删除位于“mainwindow.h”文件中的插槽。我需要删除这些:

再次运行应用程序后,它会删除上面提到的“moc_mainwindow.cpp”文件中未使用的“QT_MOC_LITERAL”(即删除的 UI 元素)。

【讨论】:

这是什么意思经过一番挖掘后我发现了问题?我告诉过你。 @scopchanov 什么时候?另外,我只是查看文件并删除内容,查看错误。你知道......调试...... @scopchanov 我只是看着它,坦率地说,它甚至没有帮助。这就像问我是否收到了我所说的警告信息。我可能应该先说我是 QT Creator 的新手,所以我几乎不知道大部分东西在哪里。不过还是谢谢 这就像问我是否收到了我所说的警告消息不,这是一个提示。 @scopchanov ...所以,是的,如果它是一个“提示”并没有帮助。我想要答案,而不是猜谜游戏。是的,我自己弄清楚比被告知答案要好,但这不是一所学校;这是一个可以提出问题并获得答案的平台。老实说,我也从这些答案中学到了东西,因为这个错误很可能会再次发生。如果你不这么认为也没关系,但这只是我的看法。有些人是比其他人更好的帮手:)

以上是关于QT Creator - 删除元素的“没有匹配的信号”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt Creator 中禁用/删除所有断点

Qt Creator:QTabWidget:我无法删除选项卡

如何在QML(QT Creator)中使用发光脉动效果制作元素动画?

qt creator无法删除文件怎么办?(需要在cmakelists文件里配置)

QT Creator 主窗口 - 如何从菜单中更改每个元素的界面?

Qt creator运行出现moc文件错误求大神解答