2011-12-17 60 views
3

我在Qt中很新,我想問問如何調用創建的.ui設計器窗體與MainWindow中的PushButton連接。如何使用button.clicked()事件調用在Qt中創建的.ui設計表單?

我做了什麼: 1.創建一個新的.ui設計表單(Forms.right click - >添加新的 - > Qt設計器表單)到當前項目。 2.在創建的.ui表單中設計一個關於對話框。 3.在MainWindow中創建一個插槽PushButton.clicked()。

對於所有誰做的Qt編程,請幫我解決這個問題到按鈕用的.ui形式連接,所以按鍵可以調用/顯示在的.ui創建的窗體。

感謝您的關注。

+0

那麼,發生了什麼? – Daggerstab 2011-12-28 09:03:54

回答

4

使用的.ui文件Qt的文檔中解釋說: http://doc.qt.io/archives/qt-4.7/designer-using-a-ui-file.html

摘要: 來處理的.ui文件最簡單的方法是通過uic(用戶界面編譯器)在編譯時運行它。如果.ui文件包含在項目(.pro)文件中,這將自動完成。 (在你的情況下,「Add New」可能已經自動完成了。)然後你只需要將生成的C++頭文件包含在你的源文件中。它的名字應該像「ui_nameoftheoriginaluifile.hpp」。當然,之後你需要實例化.hpp文件中定義的表單。

編輯補充:

有你的代碼的幾個問題,從它的可讀性開始。我不知道你以前是否使用了面向對象的語言,但是C++中的一個非常基本的規則是使用大寫字母開始類名,以使它們更容易與對象和其他變量區分開來。所以類名應該是「About」,「Parent」等。

編譯錯誤是由於使用「about」而不是在「ui_about.hpp」文件中實際使用的類的名稱導致的 - 「MainWindow 」。 (這取決於您在.ui文件中使用的表單的名稱)。

如果您使用的是Qt Creator:按住Ctrl鍵並單擊文件「ui_about.h」的名稱包含指令。這將打開它進行檢查。試着弄清楚它是如何工作的。

您還沒有將opDialog()函數定義爲「parent.cpp」中「parent」類的成員,這會導致另一個編譯時錯誤。

您也不應該使用QMainWindow作爲關於對話框。 QMainWindow應該是你的應用程序的主窗口 - 應該不會有更多的實例。

所以,about.h:

namespace Ui { 
    class MainWindow; 
} 

class about : public QMainWindow { 
    Q_OBJECT 
public: 
    about(QWidget *parent = 0); 
    ~about(); 

protected: 
    void changeEvent(QEvent *e); 

private: 
    Ui::MainWindow *ui; 
}; 

而且about.cpp的開頭:

#include "about.h" 
#include "ui_about.h" 

about::about(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 
+0

我很抱歉我遲到的回覆。順便說一句,謝謝你的迴應。 根據(http://stackoverflow.com/questions/1518317/how-to-show-another-window-from-mainwindow-in-qt)中的類似帖子和來自(http://doc.qt)的示例.nokia.com/4.7 /設計師使用-A-UI-file.html)。 我做了一個簡單的項目來打開一個關於與pushButton相關的窗口。 我已經將我的項目上傳到(http://www.mediafire.com/?y6z0ub4f0k0fnkd)。但是,仍然有一個我無法弄清楚的錯誤。 你想看看我的項目並解釋我該怎麼做才能解決它。 非常感謝。謝謝 – anarchy99 2011-12-18 16:58:49

+0

將檔案發送給其他人時,請使用比RAR更多的可移植檔案格式。 ZIP例如在任何地方都可以接受。 – Daggerstab 2011-12-19 09:08:23

+0

我要編輯我的回答,並在您的代碼上留下評論。 – Daggerstab 2011-12-19 09:08:46

1

我很抱歉,先生,如果我可以只經過很長一段時間沒有登錄,現在回覆因爲我必須在我的大學完成我的臉部識別項目。 順便說一下,我已經嘗試了很多「試驗和錯誤」後解決了我的問題,現在我可以做得很好。 我已經發布了我的項目的答案「如何使用button.clicked()事件調用在Qt中創建的.ui設計窗體?」在我的個人博客中。

這是帖子鏈接:http://hxr99.blogspot.com/2011/12/how-to-call-ui-design-form-with.html。 還有一個用於調用窗口的示例項目的下載鏈接。也許它可以幫助世界各地的人開始使用Qt編程。

我非常感謝您幫助我解決問題,並對我的英語不太好對不起。 聖誕快樂,新年快樂。 :)

相關問題