Qt中怎麼用Ui文件

Qt中怎麼用Ui文件 (2012-09-18 22:12:44)轉載 http://blog.sina.com.cn/s/blog_438037480101797n.html 第一步, 製做ui文件。 首先應該用Qt Designer繪製一個本身的界面,並存爲myform.ui(這裏的myform能夠用本身喜歡的名字代替)。 在製做本身的界面文件時要注意如下幾個要點: 一、要記住ui文件的名字,由於uic生成的代碼會存在ui_myform.h裏 二、要記住主窗體的object name, 由於ui文件提供的類名將以這個form的名字來命名 三、要特別注意你的form選擇的基類要和你代碼中的窗體類兼容 四、要記得給每一個後面須要訪問到的控件起一個有意義而且好記的object name, 由於ui文件提供的控件將以這些object name來命名 清楚了以上幾點,在代碼中使用你的ui文件就會變得很是簡單。 第二步,將ui文件加入工程 這一步最簡單,只須要修改pro文件,加入FORMS+=myform.ui qmake -project命令也能夠識別後綴名爲ui的文件,並將之加入工程。 第三步,在代碼中引用ui文件 官方介紹的使用ui文件的方法有三種,一個是直接引用,二是單繼承,三是多繼承。 第一種方法其實很不實用,你們去看一下文檔中的例子就能夠了;第二種和第三種沒有本質的差異,能夠並做一類,這裏作重點介紹。 ui文件最終會被翻譯成標準的C++代碼,並存入一個.h文件中,這個過程在調用make以後才進行,因此初始狀況下你是看不到這個ui_myform.h文件的,只有通過了make過程該頭文件才生成。不過不要緊,沒有這個文件咱們照樣能寫出正確的代碼。 單繼承方式簡單來講就是在代碼中首先要自定義一個子類(後文稱爲MyForm),該類要從form對應的窗體類(或其兼容的子類)派生;並用ui生成的類定義一個類裏的成員變量(後文成文myui)。這樣在MyForm的構造函數中能夠直接調用myui和myui中的變量和函數,使用起來很方便。 舉例說明, 好比這裏有一個ui文件叫myform.ui, ui文件裏定義的窗體名字爲BigWidget,上面擺放了一個單行編輯控件叫lineeditName: //myform.h #include 「ui_myform.h」 class MyForm: public QWidget { Q_OBJECT public: MyForm(QWidget*parent) { myui.setupUi(this); } private: Ui::BigWidget myui; private: void my_function(); }; 上面這段簡單的類的聲明是前文所述前三點要點的最佳例證,請對照要點的文字描述和具體的代碼體會其中的含義。這裏還有一點比較有意思的地方,就是ui文件提供的類被包含在了名爲Ui的name space裏,這樣作的目的是將ui文件的命名空間與用戶的代碼分離,避免二者出現命名衝突的狀況。相應的,咱們寫代碼的時候也要注意在使用ui文件中的類時要用「Ui::」的方式進行引用。 再來看cpp文件 //myform.cpp #include #include 「myform.h」 void my_function(void) { QMessageBox::information(this, 「Name」, myui.lineeditName->text()); } 這裏隨便寫了一個函數,爲了說明如何在窗體類裏調用ui文件中定義的控件。這段代碼很是簡單,就很少做說明了。 有了單繼承的基礎,學習多繼承是小菜一碟。來段代碼看一下就明白了。 //myform.h #include 「ui_myform.h」 class MyForm: public QWidget, public Ui::BigWidget { Q_OBJECT public: MyForm(QWidget*parent) { setupUi(this); } private: void my_function(); }; //myform.cpp #include #include 「myform.h」 void my_function(void) { QMessageBox::information(this, 「Name」, lineeditName->text()); } 是否是不用說明你們也能明白呢?多繼承其實就是不只從form須要的窗體類去派生,還要加上ui提供的類自己。這樣帶來的好處是你的窗體類繼承了ui裏的全部控件和方法,調用時就能夠少寫一些字。 單繼承和多繼承這兩種方法沒有好壞之分,你們能夠根據本身的編程習慣取捨。 第四步,編譯、驗證在pro文件包含正確FORMS信息的狀況下,運行qmake; make就能夠編譯工程了。 make時若是你認真看一下輸出就會發現,make在最開始編譯的時候就會自動調用uic去生成須要的代碼。通過make以後ui_myform.h文件就生成了,建議你們去看一下這個文件的內容。
相關文章
相關標籤/搜索