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

时间:2015-03-31 13:13:17

标签: c++ qt signals-slots

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

<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()

MainWindow.h&GT;

private slots:
    void on_actionDownload_Firmware_Image_triggered();

所以,我清理我的项目,run qmake,构建项目......播放它,我得到与以前完全相同的GUI,没有新的菜单项。

当App运行时,我收到以下消息&gt;

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

我注意到有关stackoverflow的其他问题,建议不要使用connectSlotsByName,但我的所有函数和插槽都被称为完全相同,所以它应该像这样工作。

我不确定为什么会这样,欢迎任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

问题解决了!

不需要编码......

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

将新.h复制到项目文件夹后,执行qmake并再次构建,一切正常。

答案 1 :(得分:0)

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

void MainWindow::on_actionDownloadFirmwareImage_triggered(bool checked)