Qt Designer設(shè)計 UI 文件并調(diào)用
Qt Designer設(shè)計 UI 文件并調(diào)用是本篇內(nèi)容將要介紹的內(nèi)容,不多說,先來看內(nèi)容。
1、用designer設(shè)計一個UI.對象名保存為myui,基于QWidget類.(可以在此基礎(chǔ)上隨便添加一些控件之類。eg:pushButton)。保存窗體為myui,or others.
2、為了明白其具體機制,我們可以用uic將此UI文件轉(zhuǎn)換成頭文件看看。uic -o ui_myui.h myui.ui.(事實上我們最后用qmake編譯的時候,qmake會自動調(diào)用uic轉(zhuǎn)換頭文件),在此.h文件中有定義了一個類class Ui_myui,并且有一個myui以public的方式繼承Ui_myui,class myui: public Ui_myui {}
特別說明:myui即是我們用designer設(shè)計的UI實體類
3、好了,輪到我們自己定義類了,為什么要自己定義類呢?是這樣的,如果我們直接調(diào)用的話,有很大的弊端:當我們的工程很浩大的時候,如果我們要修改UI文件了,則要相應(yīng)改很多源程序來繼續(xù)當前的功能,而如果我們定義一個類來繼承它的話,隨你UI怎么變,跟我關(guān)系不是很大。廢話少說,進入正題:
寫一個.h文件
- myclass.h
- #include <QtGui/QtGui>
- namespace Ui
- {
- class myui;//注:designer生成的ui類為ui_DialogClass,而我們只是用它的派生類myui
- //即:myui是ui_DialogClass的一個實體
- }
- class myclass : public QDialog//自定義一個類myclass,通過調(diào)用ui類
- {
- Q_OBJECT
- public:
- myclass(QWidget *parent = 0);//最頂層父窗口為QWidget
- ~myclass();
- private:
- Ui::myui *ui;//創(chuàng)建一個ui指針對象,因為designer只是設(shè)計出來一個myui實體類,是個宏觀概念,我們必須定義一個對象才能調(diào)用它
- };
- myclass.cpp
- #include "myclass.h"
- #include "ui_myui.h"
- myclass::myclass(QWidget *parent)
- :QDialog(parent),ui(new Ui::myui)
- {
- ui->setupUi(this);//使用ui類
- connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(close()));
- }
- myclass::~myclass()
- {
- delete ui;
- }
4、OK!我們的類已經(jīng)定義好,寫main函數(shù)調(diào)用自定義的類
- #include<QtGui/QtGui>
#include"myclass.h"//注:為什么只要這個頭文件就可以了呢?因為當我們創(chuàng)建一個myclass的對象的時//候,會自動調(diào)用它的構(gòu)造函數(shù),釋放時自動調(diào)用其析構(gòu)函數(shù).事實上我們不止只用一個構(gòu)造函數(shù)與析構(gòu)函數(shù),//這時候怎么辦呢?在myclass.h中聲明該函數(shù),在myclass.cpp中寫具體實現(xiàn)方法.
- int main(int argc,char *argv[])
- {
- QApplication app(argc,argv);
- myclass window;
- window.show();
- return app.exec();
- }
小結(jié):關(guān)于Qt Designer設(shè)計 UI 文件并調(diào)用的內(nèi)容介紹完了,希望本篇文章對你有幫助!