2015-03-31 119 views
0

我想升级我的旧应用程序..(添加一个更多的功能)。所以,我在“文件”菜单中添加了一个项目。Qt5:无法连接信号插槽

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

private slots: 
    void on_actionDownload_Firmware_Image_triggered(); 

所以,清洁我的项目,run qmake,建设项目...玩它,我也得到与以前完全一样的GUI,没有新的菜单项。

当应用程序运行时,我得到以下信息>

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

我对connectSlotsByName不建议使用的计算器等问题,注意到了,但我所有的功能和插槽被称为完全一样,所以它应该像这样工作。

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

谢谢!

+0

您是使用设计器添加动作还是仅使用文本编辑器编辑.ui文件? – thuga 2015-03-31 13:46:47

+0

我使用设计器来编辑.ui – Rorschach 2015-03-31 13:50:26

+0

现在我试着改变其中一个菜单中的关于项目的文本,并且在编译后没有改变。 – Rorschach 2015-03-31 13:54:47

回答

1

问题解决了!

是不需要编码...

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

将新.h复制到项目文件夹后,再次制作qmake并重新构建后,一切都看起来不错。

0

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

void MainWindow::on_actionDownloadFirmwareImage_triggered(bool checked) 
+0

感谢您的回复,但这并未解决问题。 – Rorschach 2015-03-31 13:27:09

+0

您还需要更改插槽签名,添加'bool checked'。 – svlasov 2015-03-31 13:31:12

+0

我试过了,没有工作。你能解释为什么这应该有所帮助吗? – Rorschach 2015-03-31 13:51:18