讀過QT Creator快速入門 第二章後的隨筆。
主要是介紹了QT Gui界面程序的生成方法,然後後面使用4中方法層層遞進的復現QT Gui界面程序如何生成的。各方法說明如下:
QT Gui界面程序創建
前提:直接使用QT Creator創建一個Gui項目。
特點:QT Creator自動生成ui界面文件,ui的頭文件ui_XXX.h。主程序main.cpp;基於QDialog的子類QXXXDialog;
直接使用純代碼
前提:直接使用QT Creator創建一個空項目,或者在QT命令行中根據cpp文件生成pro文件。
特性:自行創建cpp文件,使用QTC編譯。或者命令行編譯,步驟爲:qmake -project生成工程文件,qmake 生成makefile文件,make-根據makefile進行編譯鏈接成exe。這裏面的類全部都是QT自帶的原始類,如QDialog、QApplication、QLabel。不涉及派生類。
使用ui設計師(ui文件)
前提:直接使用QT Creator創建一個空項目
特點:使用ui設計師生成ui_XXX的ui界面文件,該文件實際上爲XML格式,然後使用QTCreator編譯(記住自添加main.cpp),會根據ui文件生成ui_XXX.h文件。該文件定義了一個Ui_XXX類,並且定義一個命名空間Ui,該命名空間包含一個類XXX,繼承Ui_XXX類。然後創建main.cpp,在主程序中使用Ui_XXX類,用於配置我們創建的QDialog對象。實際上,Ui_XXX類就是一個用於對QDialog進行佈局的類,其佈局函數爲setupUi。對於ui文件生成ui_XXX.h文件的過程,我們可以在QT Command Prompt中實現,使用命令uic -o ui_XXX.h XXX.ui。
創建C++類
前提:使用ui設計師中創建的ui文件。
特點:創建一個基於QDialog的類,在該類構造函數中使用ui_XXX的子類XXX的setupUi接口來配置界面。
使用設計師界面類
前提:創建一個空項目
特點:添加一個設計師界面類。該項目會直接創建和Gui項目相同的幾個文件。
爲何說上面是層層遞進呢?
Gui項目會直接生成main.cpp、類名.cpp、類名.h、XXX.ui、XXX.pro、ui_XXX.h
而純代碼是直接創建空項目(帶pro文件),然後自定義main.cpp。
而ui設計師是在空項目、main.cpp基礎上,使用ui設計師添加一個XXX.ui文件,編譯生成ui_XXX.h文件。
而自定義C++類實際上是在空項目、main.cpp、XXX.ui、ui_XXX.h基礎上,添加了類名.cpp和類名.h兩個文件,用於定義自己的界面類。
而設計師界面類直接生成了gui界面程序的所有文件。
本程序的類圖如下
HelloDialog就是我們自定義C++類,Ui_XXX就是使用QT設計師生成的類。我們使用Ui::XXX來佈局HelloDialog。
============================================
以上是本章的核心知識,本章還涉及如下知識:
顯示中文亂碼問題;
如何發佈應用;
編輯界面文字縮放、自動補全、幫助系統;
=============================================
本章涉及到相應文件說明
創建工程方式 | 文件清單 |
|
直接創建Qt Gui應用 | QtGuiHello.pro hellodialog.h hellodialog.cpp main.cpp hellodialog.ui ui_hellodialog.h | 工程文件,包括編譯信息 自定義類h文件,名字嚮導指定 自定義類cpp文件,名字嚮導指定 主程序 Ui界面XML文件 Ui文件生成的類頭文件 |
空工程,QC編譯 | Main.cpp
PureCodeQC.pro | 我們自己添加的cpp文件,程序入口。內部都用的QT自帶的類。 嚮導生成的工程文件。 |
無工程,不涉及QC,命令行編譯 | Main.cpp | 源文件,函數入口。使用如下命令生成exe: Qmake -project 生成工程文件(.pro) Qmake 根據pro文件生成makefile文件 Make 編譯源文件到.o,連接成exe |
空工程,添加UI界面(即設計師界面),QC編譯 | XXX.pro XXX.ui Main.cpp Ui_XXX.h | 工程文件,空工程自動創建 Ui界面XML文件,添加設計師界面創建 主程序文件,自行創建 根據ui文件生成的類文件,Ui::XXX類 |
命令行編譯ui文件 | XXX.ui Main.cpp | Ui文件,Uic生成ui_xxx.h 自行編輯,Qmake生成exe |
自定義C++類 | XXX.pro Hellodialog.cpp Hellodialog.h XXX.ui Main.cpp Ui_XXX.h | 工程文件,創建空工程確定; 自定義類cpp文件,創建類 自定義類h文件,創建類 Ui界面XML文件 主程序 Ui文件生成的類頭文件 |
QT設計師界面類 | 等同於Gui界面程序 |