2015-03-31 158 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