Qt5:无法将信号连接到插槽

Qt5: could not connect signal to slot

本文关键字:连接 插槽 信号 Qt5      更新时间:2023-10-16

我正在尝试升级我的旧应用程序。。(再增加一个功能)。所以,我在"文件"菜单中又添加了一个项目。

<addaction name="actionDownload_Firmware_Image"/>
<action name="actionDownload_Firmware_Image">

<property name="text">
    <string>&amp;Download Firmware Image</string>
   </property>
   <property name="menuRole">
    <enum>QAction::ApplicationSpecificRole</enum>
   </property>
  </action>

在这里定义我的插槽:

void MainWindow::on_actionDownload_Firmware_Image_triggered()

主窗口.h>

private slots:
    void on_actionDownload_Firmware_Image_triggered();

所以,我清理我的项目run qmake,构建项目。。。播放它,我得到了和以前完全一样的GUI,没有新的菜单项。

当应用程序运行时,我收到以下消息>

QMetaObject::connectSlotsByName: No matching signal for on_actionDownload_Firmware_Image_triggered()

在stackoverflow上的其他问题上,我注意到不建议使用connectSlotsByName,但我所有的函数和槽都是完全相同的,所以它应该是这样工作的。

我不知道为什么会发生这种事,欢迎任何帮助。

谢谢!

问题解决了!

不需要编码。。。

编译时,Qt将ui_mainwindow.h放在新创建的构建文件夹中,而不是放在项目文件夹中。。所以应用程序看不到更新的.h

在将new.h复制到项目文件夹中,执行qmake并再次构建之后,一切看起来都很好。

删除操作名称中的下划线。并将插槽定义为:

void MainWindow::on_actionDownloadFirmwareImage_triggered(bool checked)