一、Qt 項目建立、編譯、運行
Hello World 程序就是讓應用程序顯示 “Hello World” 字符串。這是最簡單的應用,但卻包含了一個應用程序的基本要素,所以一般使用它來演示程序的創建過程。本節要講的就是在 Qt Creator 中創建一個圖形用戶界面的項目,來生成一個可以顯示 “Hello World” 字符串的程序。
1.1 步驟一:新建項目
(1)運行 QtCreator,打開 “文件 -> 新建文件或項目” 菜單項,彈出一個對話框,我們選擇 Application 項目中的 Qt Widgets Application。然后單擊 “Choose” 按鈕。

(2)輸入項目名稱:helloworld,然后點擊 “瀏覽” 按鈕來選擇源碼存放路徑,比如我這里是 E:\codeTest\qtCreator_2,如果選中了 “設為默認的項目路徑”,那么今后創建的項目都將存放在這里。單擊“下一步”。注意:項目所在路徑中不能有中文,否則程序會運行報錯。

(3)選擇構建套件:DeskTop Qt 5.6.7.1 MinGw 32bit,點擊詳情按鈕可以看到默認為 Debug 版本和 Release 版本分別設置了不同的目錄,都保持默認即可。單擊“下一步”。

(4)自定義類名:設定類名為 HelloDialog, 基類選擇 QDialog,表明該類繼承自 QDialog 類,使用這個類可以生成一個對話框界面。這時下面的頭文件、源文件和界面文件都會自動生成,保持默認即可。然后單擊“下一步”。

(5)設置項目管理:在這里可以看到這個項目的匯總信息,還可以使用版本控制系統,這里不會涉及,直接單擊 ”完成“ 即可。

(6)右擊項目文件列表中的任一文件,點擊 ”在Explorer中打開“,就可以轉到項目文件夾,讓我們來看看項目目錄中的各個文件說明:

1.2 步驟二:界面設計
(1)在 Qt Creator 編輯模式下雙擊項目文件列表中界面文件分類下的 hellodialog.ui 文件,便會進入設計模式。
(2)關於設計模式的界面介紹這里就不再贅述,可以翻看《Qt Creator快速入門》第二章查看。

(3)在控件區尋找一個 ”Label“ 標簽部件,將它拖拽到主設計區的界面上,雙擊進入它進入部件進入編輯狀態后輸入 ”Hello World!我是Qter!“字符串。還可以再拖拽一個 ”PushButton“ 按鈕部件到標簽下方,編輯按鈕上文本為 ”OK",如下圖所示:

1.3 步驟三:編譯並運行程序
(1)Ctrl+R 組合鍵相當於左下角第一個綠色三角按鈕(編譯運行),按下后程序開始編譯,右下角還有一個可視的進度條。

(2)如果前面操作沒有錯誤,那么這時我們制作的 helloWorld 應用程序已經運行起來了,而 Qt Creator 下方彈出了“應用程序輸出”框,在這里有一個紅色的方塊按鈕可以終止程序運行,也可以直接關掉 HelloWorld 窗口。

二、helloWorld程序源碼詳解
第一步,新建空項目。打開 Qt Creator,並新建項目,項目名稱為 _helloworld。
第二步,往項目中添加 main.cpp 文件。
第三步,編寫源代碼。在 main.cpp 中添加如下代碼:
#include <QApplication>
#include <QDialog>
#include <QLabel>
int main(int argc, char * argv[])
{
QApplication a(argc, argv);
QDialog w;
QLabel label(&w);
label.setText(QObject::tr("Hello World!我是Qter!"));
w. show();
return a. exec();
}
- 前 3 行代碼是頭文件包含。在 Qt 中每一個類都有一個與其同名的頭文件,因為后面用到了 QApplication、QDialog 和 QLabel 這 3 個類,所以這里要包含這些類的定義。
- 第 4 行就是在 C++ 中最常見到的 main() 函數,它有兩個參數,用來接收命令行參數。
- 第 6 行新建了 QApplication 類對象,用於管理應用程序的資源,任何一個 Qt GUI 程序都要有一個 QApplication 對象。因為 Qt 程序可以接收命令行參數,所以它需要 argc 和 argv 兩個參數。
- 第 7 行新建了一個 QDialog 對象, QDialog 類用來實現一個對話框界面。
- 第 8 行新建了一個 QLabel 對象,並將 QDialog 對象作為參數,表明了對話框是它的父窗口,也就是說這個標簽放在對話框窗口中。
- 第 9 行給標簽設置要顯示的字符。
- 第 10 行讓對話框顯示出來。
- 第 11 行讓 QApplication 對象進入事件循環,這樣當 Qt 應用程序在運行時便可以接收產生的事件,例如單擊和鍵盤按下等事件。
編譯運行程序,效果跟上面類似。
下面介紹兩個實用功能:
- 第一個是快速查看。將鼠標指針放到一個類名或函數上,便會出現一個提示框顯示其簡單的介紹,而此時按下 F1 鍵就可以快速打開其幫助文檔。
- 第二個是快速跳轉。按下 Ctrl 的同時,將鼠標指針放到一個頭文件類名或函數上,可以實現“跳轉”功能。
三、[補充]項目模式和項目文件介紹
3.1 項目模式介紹
按下快捷鍵 Ctrl + 5 ,或者單擊“項目”圖標,都可以進人項目模式。項目模式分為 “構建設置’、“Active Project”、“Build & Run”、“Project Settings” 這幾個頁面。在構建設置頁面可以設置要構建的版本,如 Debug 版或是 Release 版本,還可以設置所使用的 Qt 版本。這里有一個 Shadow build 選項,作用是將項目的源碼和編譯生成的文件分別存放。將編譯輸出與源代碼分別存放是個很好的習慣,尤其是在使用多個 Qt 版本進行編譯時更是如此。
3.2 項目文件介紹
下面來看一下上面建立的 helloWorld 項目的 helloWorld.pro 文件的內容:
1 #----------------------------------------------------------------------
2 #
3 # Project created by QtCreator 2018-12-13T16:37:02
4 #
5 #----------------------------------------------------------------------
6
7 QT + = core gui
8
9 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10
11 TARGET = helloworld
12 TEMPLATE = app
13
14 DEFINES += QT_DEPRECATED_WARNINGS
15
16 CONFIG += c++11
17
18 SOURCES + = main. cpp\
19 hellodialog.cpp
20
21 HEADERS + = hellodialog.h
22
23 FORMS + = hellodialog.ui
24
25 RC_FILE + = myico. rc
- 第1〜5行是注釋信息,說明這個文件生成的時間。
- 第7行表明了這個項目使用的模塊。core模塊包含了 Qt 非圖形用戶界面的核心功能,其他所有模塊都依賴於這個模塊;而gui模塊擴展了 core 模塊的圖形界面功能。也就是說,如果不需要設計圖形界面的程序,那么只需要core模塊就可以了,但是如果涉及圖形界面,那么就必須包含 gui 模塊。其實所謂的模塊,就是很多相關類的集合,比如所有與圖形界面有關的類都在gui模塊中,讀者可以在 Qt 幫助中査看 QtCore Module 和 QtGui Module 關鍵字。
- 第9行這行代碼的意思是,如果QT主版本大於4(也就是說當前使用的是Qt5或者更高版本),則需要添加widgets模塊。也可以直接用“QT+=widgets”,但這樣可以保持與QT4的兼容性,因為QT4用的是QtGui模塊,而Qt5里不再用QtGui模塊,而是使用QtWidgets模塊。
- 第11行是生成的目標文件的名稱,就是生成的exe文件的名字,默認的是工程的名字, 當然也可以在這里改為別的名字。
- 第12行使用app模板,表明這是個應用程序。
- 第14行表明,如果使用已被標記為已棄用的Qt的任何功能,則會使您的編譯器發出警告。
- 第16行表明,使工程支持C++11標准。
- 第18、21和23行分別是工程中包含的源文件、頭文件和界面文件。
- 第25行就是添加的應用程序圖標的文件。這里這些文件都使用了相對路徑,因為都在項目目錄中,所以只寫了文件名。
這里還要提一下那個在項目文件夾中與 .pro 文件一起生成的 .pro. user 文件,它包含了本地構建信息,包含 Qt 版本和構建目錄等。可以用記事本或者寫字板將這個文件打開査看其內容。
參考:
《Qt Creator快速入門》第二章
Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運行和發布過程解析
