我正在尝试升级我的旧应用程序..(再添加一个功能)。所以,我在“文件”菜单中又添加了一个项目。
<addaction name="actionDownload_Firmware_Image"/>
<action name="actionDownload_Firmware_Image">
<property name="text">
<string>&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
,但我的所有函数和插槽都被称为完全相同,所以它应该像这样工作。
我不确定为什么会这样,欢迎任何帮助。
谢谢!
答案 0 :(得分:1)
问题解决了!
不需要编码......
在编译时,Qt将ui_mainwindow.h
放入其新创建的构建文件夹中,而不是放在项目文件夹中。所以应用程序没有看到更新的.h
将新.h复制到项目文件夹后,执行qmake
并再次构建,一切正常。
答案 1 :(得分:0)
删除操作名称中的下划线。并将插槽定义为:
void MainWindow::on_actionDownloadFirmwareImage_triggered(bool checked)