- Qt 5.12實戰
- 朱晨冰 李建英
- 11字
- 2021-03-26 21:56:33
第2章 搭建Qt 5.12開發環境
2.1 搭建Windows下的Qt開發環境
當前,Windows下的Qt開發方式主要有以下兩種。
(1)基于MSVC編譯器
這種開發方式使用MSVC編譯器,這個編譯器在安裝VC2017時就一同安裝了。程序編輯器的選擇可以根據開發者自己的喜好。一種是使用VC2017作為程序編輯器,此時需要安裝用于VC2017的Qt插件,之后才能調用Qt SDK來進行軟件的開發。這是一種簡單的方法,我們只需要進行少量的修改甚至不做修改就可以開始軟件的開發和調試,這種方式簡稱為VC+Qt開發方式。另外一種就是選擇使用Qt Creator作為程序編輯器,這種開發方式需要另外配置調試器(需要單獨安裝微軟CDB調試器)。CDB是微軟的調試器(Debugging Tools for Windows),需要手工下載和安裝,這一點比較麻煩。
(2)基于GCC編譯器
這種開發方式的優點是不需要安裝VC2017,采用和Linux下同樣的編譯器(Linux下的編譯器肯定是GCC)。這種方式簡稱為Qt Creator+GCC+GDB方式,學過Linux的人都知道(如果沒有學過,可以參考筆者的另一本書《Linux C/C++一線開發實踐》),GCC和GDB分別是Linux下的編譯器和調試器,它們都無法直接在Windows下使用,需要安裝一個Linux環境模擬器MinGW(Minimalist GNU on Windows)。這種方式比較小眾,通常是Linux狂人喜歡使用的方式。
至于選擇上述哪種開發方式,視個人喜好而定。本書大部分章節使用的是VC2017中的MSVC編譯器,再搭配Qt Creator程序編輯器,只有在學C++語言時使用的是GCC編譯器。另外,練習安裝不同開發方式的系統時選擇安裝在虛擬機中會更好,因為一種開發方式練習完畢,就可以把系統恢復到沒有安裝這種開發方式之前,再開始另外一種開發方式的安裝,也就是說從“干凈”的系統環境開始練習新的開發方式。
2.1.1 搭建基于MSVC編譯器的開發環境
1. 安裝VC2017
VC2017既可以在線安裝,也可以離線安裝,離線安裝時要先下載幾十吉字節的安裝包。關于VC2017的安裝可以參考筆者的另外一本書《Visual C++ 2017從入門到精通》,這里不再贅述。
如果本機不能上網,可以采用離線安裝。離線版安裝前先要安裝.NET 4.6或以上的.NET框架,可以在百度上通過搜索關鍵字“.net framework 4.6.2”來找到.NET 4.6框架,如圖2-1所示。

圖2-1
第二個搜索結果就是離線版本.NET,從微軟官網上下載安裝文件,安裝文件的文件名是NDP462-KB3151800-x86-x64-AllOS-ENU。直接雙擊安裝文件進行安裝,稍等片刻即可安裝完成(見圖2-2)。

圖2-2
單擊“完成”按鈕,結束安裝。接下來即可開始離線安裝離線版的VC2017了。安裝VC2017時,有兩個步驟,第一步是選中“使用C++的桌面開發”,第二步是選中“對C++的Window XP支持”和“用于x86和x64的Visual C++ MFC”,然后單擊“安裝”按鈕,如圖2-3所示。
稍等片刻即可安裝完成。安裝完VC2017后,下一步是下載和安裝Qt 5.12.2(Qt開發包)。

圖2-3
2. 下載和安裝控制臺調試器CDB
CDB(Microsoft Console Debugger)是微軟公司Windows SDK套件中的一款命令行調試工具。我們后面會在Qt Creator下調試程序,由于集成開發環境Qt Creator 4.8不自帶調試器,因此需要為這個集成開發環境安裝和配置調試器,否則無法進行單步調試。
Qt Creator 4.8本身不帶有編譯器和調試器。Windows平臺有兩套編譯器和調試器可供Qt Creator 4.8使用:一套是MinGW系列,是Windows下最小化的Linux模擬平臺,包含編譯器GCC和調試器GDB(這兩個工具都是Linux下的著名軟件);另外一套使用MSVC編譯器和CDB調試器(微軟旗下的產品,MSVC編譯器在安裝VC2017后就有了,而CDB要另外下載安裝,它是包含在Windows SDK工具套件中的一個小工具)。由于GDB調試功能不如CDB,因此本書使用Qt Creator+MSVC+CDB的組合,當然在使用Qt Creator時才采用這種組合,筆者更傾向于使用VC2017直接開發Qt程序,畢竟VC2017比Qt Creator強大得多。
建議CDB在Qt安裝之前就先裝好,這樣可以讓Qt在安裝的時候能自動探測到。下面介紹CDB的下載和安裝。CDB屬于Windows SDK Kits中的一個小工具,因此我們可以下載Windows SDK Kits,然后進行選擇安裝。Windows SDK Kits的下載地址是:
https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk
在網頁上找到如圖2-4所示的內容。
單擊鏈接“DOWNLOAD THE .ISO>”開始下載,下載得到的是一個iso文件,文件名是18362.1.190318-1202.19h1_release_WindowsSDK.iso。然后把這個文件加載到虛擬光驅中,雙擊虛擬光盤根目錄下的WinSDKSetup.exe開始安裝。第一個安裝界面如圖2-5所示。

圖2-4

圖2-5
使用默認選項,直接單擊Next按鈕。出現圖2-6所示的對話框,勾選第一個復選項即可,其他不必選。

圖2-6
然后單擊Install按鈕開始安裝。稍等片刻即可安裝完成。
有人可能會說,Qt Creator怎么這么麻煩?其實其他平臺也是如此,都需要第三方的編譯器和調試器,具體見表2-1。
表2-1 各平臺的編譯器和調試器

當然,如果不準備單步調試,那么不為Qt Creator 4.8配置調試器也可以進行編譯和運行,但是開發大型程序沒有調試器就是自尋煩惱。
3. 下載和安裝Qt 5.12.2
準備工作完成了,下面可以讓Qt正式登場了。在撰寫本書時,Qt的最新版本是5.12.2,可以到以下兩個地址下載:
· https://download.qt.io/archive/qt/
· http://download.qt-project.org/official_releases/qt/
Qt從5.7版開始支持VC2017,如果項目沒有特殊要求,建議使用Qt 5系列進行開發。在VC中開發Qt程序需要安裝Qt的VC插件(Qt Add-In),在VC2017之前Qt插件有單獨的離線安裝包,但在VC2017中Qt插件只能在線安裝了,我們可以通過VC2017的主菜單(“工具→擴展和更新”)來進行安裝。如果不能聯網,又想用較高的VC+Qt版本進行開發,可以選擇VC2013和Qt 5.8的組合,這個版本的離線Qt插件安裝包還是有的。
不過,Qt的版本更新得比較快,一般的更新形式為新增一些類或停止維護一些類。如果不是為了維護用舊版本編寫的程序,或者計算機配置實在較低,筆者建議選用最新版本的Qt進行程序開發。目前的最新Qt版本為5.12.2,后續章節中的示例程序都是在該版本下編譯和運行的。當然,示例程序中的大部分代碼也可以在Qt稍低的版本上運行。
Qt的一個最大優勢是跨平臺,它可以在Windows、MacOS和Linux上開發和運行,對于初學者而言,建議一開始在Windows平臺上開發,因為方便得多。筆者所使用的操作系統是Windows 7,下載下來的Qt安裝文件為qt-opensource-windows-x86-5.12.2.exe。
再次提醒讀者,在安裝Qt 5.12.2之前,確保已經安裝好VC2017。直接雙擊qt-opensource-windows-x86-5.12.2.exe文件開始安裝,顯示出歡迎界面,如圖2-7所示。
單擊Next按鈕,出現Qt Account界面,提示要輸入Qt賬號(可以到官網上去注冊),如果沒有賬號,就單擊Skip按鈕,繼續單擊Next按鈕,出現“安裝文件夾”對話框后,設置好Qt要安裝在哪個路徑下,這里安裝在C:\Qt\Qt5.12.2,如圖2-8所示。需要注意的是,安裝路徑不能有空格或中文。

圖2-7

圖2-8
Qt 5.12.2安裝時會把Qt Creator(開發Qt程序的IDE)也自動安裝好,如果要讓Qt開發對應的常見文件類型關聯到Qt Creator(雙擊這些文件,即會用Qt Creator打開),那么在圖2-8中就要勾選左下角的復選項。繼續單擊“下一步”按鈕,出現“選擇組件”對話框。選擇要安裝的組件,這里選擇MSVC 2017 64-bit和Qt Creator 4.8.2 CDB Debugger,如圖2-9所示。
接著單擊“下一步”按鈕,后面幾步也是一直單擊“下一步”按鈕。然后開始正式安裝,稍等片刻即可安裝完成,如圖2-10所示。

圖2-9

圖2-10
如果勾選Launch Qt Creator,那么該對話框關閉后會啟動Qt Creator。保持默認選中狀態,然后單擊“完成”按鈕,此時將啟動Qt Creator,如圖2-11所示。

圖2-11
至此,Qt 5.12.2安裝成功。
4. 配置Qt環境變量
在環境變量Path的末尾添加C:\Qt\Qt5.12.2\5.12.2\msVC2017_64\bin,如圖2-12所示。

圖2-12
前面的幾步都是基礎步驟,無論是用VC2017開發Qt還是用Qt Creator開發Qt都需要完成這3步曲,“安裝CDB調試器”就是為Qt Creator提供調試功能。下面我們分別搭建兩種集成開發環境。
5. 在VC2017中開發(VC+Qt)
首先強烈建議大家(尤其是初學者)使用VC2017來開發Qt程序。既然要在VC2017下開發Qt,那么首先就要安裝好VC2017,關于VC2017的安裝和使用可以參考筆者在清華大學出版社出版的《Visual C++ 2017從入門到精通》,它是學習VC++ 2017開發工具的紅寶書。
6. 安裝VC2017的Qt插件(離線方式)
要用VC2017開發Qt程序,除了VC2017和Qt本身外,還需要用一個橋梁架在兩者之間,這就是VC2017的Qt插件。可以認為它是一個小軟件,需要進行安裝,分為離線安裝和在線安裝兩種。
離線安裝方式適合于不能聯網的計算機上,有些企業的計算機是不能聯網的,所以只能采用這種安裝方式,先從其他地方下載插件包,然后復制到計算機上再進行安裝。
以前利用VC開發Qt的時候,官方會針對不同的VC版本發布相應的Qt插件,這次也不例外。這里我們選擇2.2.2版本的插件,雖然有更高的版本插件,但建議不要選擇太高的版本,因為太高的版本對VC2017的內部版本要求比較高,如果安裝的VC2017版本不是很高,則安裝會出錯(筆者從2.3.2插件開始安裝,一路降低版本試錯到2.2.2才成功,希望各位不要再走彎路)。官網下載網址為https://download.qt.io/official_releases/vsaddin/2.2.2/。
選擇文件qt-vsaddin-msvc2017-2.3.2.vsix下載,下載后直接雙擊該文件即可開始安裝,如圖2-13所示。
單擊“安裝”按鈕,稍等片刻即可安裝完成,如圖2-14所示。

圖2-13

圖2-14
單擊“關閉”按鈕,插件安裝成功。此時我們啟動VC2017,可以在主菜單上看到一個名為“Qt VS Tools”的菜單,如圖2-15所示。
為何要安裝高版本呢?因為低版本的VC2017(比如內部版本15.3.3)雖然可以裝上Qt插件2.2.2的版本,但是如果本機聯網,經常會自動升級到2.3.2版本,低版本的VC2017還不支持高版本的Qt插件,導致下次啟動VC2017時提示插件加載失敗。故而建議大家一開始就使用高版本的VC2017,比如從官網下載離線版的VC2017。注意,不聯網的計算機不存在此問題。
7. 安裝VC2017的Qt插件(在線方式)
對于很多可以聯網的計算機而言,在線安裝更為簡單,具體步驟如下:
(1)打開VC2017,依次單擊主菜單的菜單選項“工具→擴展和更新”,如圖2-16所示。

圖2-15

圖2-16
(2)在新出現的對話框上選擇“聯機”選項,并搜索關鍵字“QT”,選擇對應的版本,單擊“下載”按鈕,如圖2-17所示。

圖2-17
搜索出來的插件版本是2.3.2,這個版本在某些VC2107(內部版本比較低)上安裝是不成功的。大家可以試試,如果失敗,就先卸載(卸載方法見后文),然后用離線方式(前文有介紹)安裝,記得先下載較低版本的插件(比如2.2.2)再安裝。
后續的安裝步驟與離線安裝方式的步驟相同,即關閉VC2017后就會出現安裝提示框,如圖2-18所示。
單擊“修改”按鈕開始正式安裝。安裝完畢后,再次打開VC2017,就會發現主菜單欄上有Qt VS Tools了,如圖2-19所示。

圖2-18

圖2-19
其實離線或在線方式都是先下載,只是在線方式是VC幫我們找出最新版本來下載,而離線方式是我們自己從官網選擇合適的版本下載,下載下來之后安裝和設置都一樣。
8. 配置插件選項
前面我們安裝好了VC的Qt插件,現在離使用還差最后一步了,就是告訴插件我們Qt安裝的路徑。打開VC2017,依次單擊主菜單的菜單選項“Qt VS Tools→Qt Options”,在新出現的Qt Options對話框上單擊Add按鈕,然后在出現的Add New Qt Version對話框中選擇msvc2017_64文件夾的路徑(我們在前面安裝Qt的時候是安裝在C盤),如圖2-20所示。
至此,Qt插件配置完成,重啟VC。
再次建議大家安裝高版本的VC2017,比如15.9.11,可以通過“關于”對話框查看版本號,筆者使用的VC2017版本如圖2-21所示。

圖2-20

圖2-21
9. 第一個VC開發的Qt 5.12.2程序
此時重新啟動VC2017應該就可以開發Qt程序了,如果啟動VC2017之后還是找不到Qt插件,建議刪除插件后再次安裝。下面我們在VC2017中新建一個Qt項目,以測試環境是否安裝正常。
【例2.1】 第一個VC開發Qt圖形界面(GUI)程序
(1)啟動VC2017,如果安裝的是2.2.2版本的Qt插件,則依次單擊主菜單的菜單選項“文件→新建→項目”,在“新建項目”對話框的左側展開Visual C++,選中Qt,然后在右側選擇Qt GUI Application,如圖2-22所示。

圖2-22
如果安裝的是2.3.2版本的Qt插件,則在左側選中“測試”,然后在右側選擇Qt GUI Application,如圖2-23所示。

圖2-23
輸入名稱和位置,單擊“確定”按鈕,后面一路保持默認設置,都直接單擊“下一步”按鈕,最后單擊“完成”按鈕,此時會自動打開代碼編輯窗口,并且在解決方案視圖中可以看到為我們創建的文件,比如兩個cpp文件、一個h文件、一個ui文件,如圖2-24所示。
上述3種類型的文件是我們經常要打交道的:cpp和h類型的文件是用來編寫代碼的;ui類型的文件是用來存放Qt界面元素的,雙擊該文件,即可打開一個界面設計器,我們可以在其中執行拖放控件、添加菜單等可視化界面設計的操作。雙擊test.ui文件,會出現Qt的設計師界面,如圖2-25所示。

圖2-24

圖2-25
學過VC或C#的人對這個界面不會陌生,就是用來拖放控件的。左邊的Widget Box相當于一個控件工具箱,現在暫時不用去管它。
(2)關掉Qt設計師界面,回到VC上,準備運行程序,依次單擊主菜單的菜單選項“調試→開始執行(不調試)”,或直接按Ctrl+F5快捷鍵,程序運行結果如圖2-26所示。

圖2-26
至此,我們第一個Qt程序運行成功了。
除了圖形界面程序外,控制臺程序也是經常會碰到的,下面我們來創建一個控制臺程序。
【例2.2】 第一個VC開發的Qt控制臺程序
(1)啟動VC2017,按Ctrl+Shift+F5快捷鍵打開“新建項目”對話框。在該對話框的左側展開Visual C++→Qt,在右側選擇Qt Console Application,然后在下方輸入項目名稱和路徑,如圖2-27所示。

圖2-27
單擊“確定”按鈕。后面一路單擊Next按鈕,最后一步單擊Finish按鈕。此時一個main.cpp文件就創建好了,里面自動生成了幾行代碼:

· 注釋1:這一行包含了QCoreApplication類的定義。
· 注釋2:在每一個使用Qt的應用程序中都必須使用一個QCoreApplication對象。QCoreApplication管理了應用程序各種各樣的資源,比如默認的字體和光標。QCoreApplication繼承自QObject,而QObject就是Qt中最基本的基類,也就是Qt的根基。
· 注釋3:QCoreApplication最重要的函數是exec(),這個函數會開啟主事件循環并且進入阻塞狀態。
現在我們在return語句前添加一行打印語句:
printf("hello world from qt,謝謝大家");
(2)保存項目,按Ctrl+F5快捷鍵或依次單擊主菜單的菜單選項“調試→開始執行(不調試)”,運行結果如圖2-28所示。

圖2-28
10. 在VC2017中使用單步調試功能
前面通過兩個小例子可以證明VC2017編譯和運行Qt程序是正常的。下面我們來驗證調試功能。
單步調試功能是軟件開發(尤其是大型軟件開發)必不可少的,也是專業的開發工具必須提供的功能。使用過VC工具開發Windows程序的人經常會用到單步調試,開發Qt程序也不例外。
在VC2017下單步調試Qt程序的快捷鍵和單步調試Windows程序是一樣的,比如最常用的調試運行快捷鍵F5、單步(不進函數)快捷鍵F10和單步(進函數)快捷鍵F11,如果要在某行代碼設置斷點,則可使用快捷鍵F9或者使用鼠標進行設置。這里簡單介紹一下單步調試功能,主要是為了驗證VC2017對于Qt程序的調試器是否正常。下面我們通過一個控制臺程序來驗證單步調試。
【例2.3】 通過控制臺程序來驗證VC2017的單步調試
(1)啟動VC2107,新建一個Qt控制臺程序,項目名是test。
(2)我們準備定義一個全局函數test,然后在main函數中調用該函數,打開main.cpp,添加如下代碼:

我們把光標定位到main函數中的“test();”那一行,然后按F9鍵,此時該行開頭將出現一個小紅圈,如圖2-29所示。這就意味著,當程序進入調試模式時執行到該行語句之處將暫停。也可以直接用鼠標單擊這一行語句所處的位置,小紅圈就會出現。這個就是設置斷點(程序運行的中斷點)的過程。
下面我們按F5鍵開始調試程序,稍等片刻,可以發現程序運行到斷點處就停住了,而且小紅圈中間出現了一個箭頭,如圖2-30所示。

圖2-29

圖2-30
此時按F11鍵,開始單步調試,如果碰到函數,就會進入函數(小箭頭到test函數的第一行處了),如圖2-31所示。
這就說明單步調試正常。下面我們按F10鍵,可以發現程序繼續單步往下運行,單步運行到puts函數的時候,在控制臺輸出窗口中出現了“hello world”的輸出,如圖2-32所示。

圖2-31

圖2-32
注意
快捷鍵F10也是用于單步調試的,但碰到函數時不會進入函數體內進行單步運行,而是把函數調用語句作為一個單步語句一次執行完,而后繼續執行函數調用語句后續的程序語句,英文表示這種調試方式就是Step Over。
如果不再想單步調試,可以按F5鍵全速執行,直接執行到下一個斷點。如果沒有下一個斷點,則執行到程序結束。
通過這個小例子,我們驗證了VC2017單步調試Qt,調試器功能一切正常。
11. 卸載Qt 5.12.2
下面簡單提一下VC2017的Qt插件的卸載。為何要學習卸載呢?這是因為安裝了較高版本的Qt插件,可能會不成功,需要先卸載高版本的插件,再安裝低版本的插件。卸載的方式是啟動VC2017,然后依次單擊主菜單的菜單選項“工具→擴展和更新”,在“擴展和更新”對話框上找到Qt插件,如圖2-33所示。
單擊“卸載”按鈕,告訴VC2017這個插件不要了,登記一下,然后關閉對話框,再關閉VC2017。關閉VC2017的時候,卸載才真正開始,如圖2-34所示。單擊“修改”按鈕開始卸載。卸載完畢后,再次啟動VC2017,可以發現菜單欄上沒有Qt VS Tools菜單選項了。
12. 在Qt Creator 4.8.2中開發(Qt Creator+MSVC+CDB)
或許某些人不喜歡用VC ,那么也可以用另外一個官方出品的Qt開發利器Qt Creator。在安裝Qt 5.12.2的時候,系統已經自動幫我們安裝了Qt Creator 4.8.2,如圖2-35所示。

圖2-33

圖2-34

圖2-35
依次單擊選項“開始→Qt5.12.2→Qt Creator 4.8.2(Enterprise)”來啟動它。打開后主界面如圖2-36所示。

圖2-36
下面我們用Qt Creator新建一個圖形界面程序。
【例2.4】 第一個Qt Creator 4.8.2開發的Qt程序
(1)啟動Qt Creator 4.8.2,依次單擊主菜單的菜單選項“文件→新建文件或項目”或直接按Ctrl+N快捷鍵來打開New File or Project對話框,然后在左側選擇Application,在右側選擇Qt Widgets Application。Qt Widgets模塊提供了一組UI元素用于創建經典的桌面風格的用戶界面,Widgets是小部件的意思,本書統一稱為控件,因此Qt Widgets Application稱為Qt控件程序,如圖2-37所示。

圖2-37
然后單擊Choose…按鈕,在新出現的對話框上設置項目名稱和路徑,如圖2-38所示。

圖2-38
這個路徑和目錄必須預先創建好,否則不讓進行下一步操作,這也是Qt Creator有些“弱智”的地方,居然不會自動幫我們創建目錄。由此可見VC成為世界第一的IDE不無道理,細節決定成敗。繼續下一步,在新出現的對話框中顯示出Qt開發工具包已經自動探測到了,我們不需要去選擇,如圖2-39所示。
因為我們在前面安裝了VC2017,所以Qt Creator向導讓用一個MSVC2017的編譯器,注意Qt Creator本身不帶編譯器,所以新建項目的時候要選擇一個。直接單擊“下一步”按鈕,在出現的對話框中顯示類信息,如圖2-40所示。

圖2-39

圖2-40
Qt程序一般是由頭文件、cpp源文件和.ui界面文件組成的,前兩者大家都熟悉,就是存放代碼的文件,ui文件則是用于可視化界面設計的,比如拖放控件等。單擊“下一步”按鈕,再單擊“完成”按鈕,向導結束,編輯代碼窗口自動出現。
(2)保存項目,準備運行,按快捷鍵Ctrl+R或依次單擊主菜單的菜單選項“構建→運行”,運行結果如圖2-41所示。

圖2-41
上面的例子比較簡單,我們沒有做過多解釋,主要目的是測試Qt5的開發功能是否工作正常。趁熱打鐵,下面我們來看一個稍微復雜點的例子,拖一個編輯框控件到主窗口上,并對代碼做一些說明。
【例2.5】 帶有編輯框的Qt程序
(1)啟動Qt Creator 4.8.2,依次單擊主菜單的菜單選項“文件→新建文件或項目”或直接按Ctrl+N快捷鍵來打開New File or Project對話框,然后在左側選擇Application,在右側選擇Qt Widgets Application,如圖2-42所示。

圖2-42
單擊Choose按鈕,進入下一步,設置項目名稱和路徑,如圖2-43所示。

圖2-43
注意,路徑和目錄要預先創建好。然后跟隨向導進入下一步,直到在“類信息”對話框上輸入類名為Notepad,并選擇QMainWindow作為基準類,如圖2-44所示。

圖2-44
然后單擊“下一步”按鈕,出現匯總對話框,如圖2-45所示。

圖2-45
在該對話框上可以看到要添加的文件。其中,main.cpp表示本程序的主源代碼文件;notepad.cpp表示類Notepad的源代碼文件;notepad.h表示類Notepad的頭文件;notepad.ui表示UI表單文件,用于可視化界面設計;test.pro是項目文件,存放項目配置信息。最后,單擊“完成”按鈕來關閉對話框。隨后,向導自動幫我們創建這些文件。
(2)我們在“項目”視圖雙擊main.cpp文件以打開該文件,編輯視圖內即可看到這個文件的源碼了:

· 第2行:所有Qt程序都要包含頭文件QApplication。
· 第6行:創建一個QApplication對象。這個對象管理應用程序的資源,這對于運行任何使用Qt Widgets(控件)的Qt程序都是必需的,對于不使用Qt控件的GUI應用程序,可以改用QGuiApplication。
· 第7行:創建記事本對象。Notepad類是向導為我們生成的,相當于一個主窗口,包含控件元素。控件類似VC/C#編程中的控件和窗口,常見的有文本編輯、滾動條、標簽和按鈕等。控件也可以是其他控件的容器,例如對話框或主應用程序窗口。
· 第8行:這一行在屏幕上顯示記事本主窗口。注意,我們的記事本類Notepad繼承自QMainWindow,相當于一個容器,上面還可以包含其他幾種類型的控件。默認情況下,控件不可見,函數show使控件可見。
· 第10行:這一行使QApplication對象進入其事件循環。當Qt應用程序運行時,會生成事件并將事件發送到應用程序的控件。常見的事件有鼠標按下和鍵盤按鍵。
(3)界面設計。向導以xml格式生成用戶界面定義notepad.ui,這個文件可以在項目視圖里的Forms下看到,如圖2-46所示。

圖2-46
當我們雙擊notepad.ui文件時,它會自動在集成Qt設計器中打開,如圖2-47所示。左邊是工具箱,其中有很多控件,可以把它們拖動到右邊的表單(VC中稱為對話框)上。當我們構建應用程序時,Qt Creator會啟動Qt用戶界面編譯器(UIC),它讀取.ui文件(本項目里就是notepad.ui)并創建相應的C++頭文件(ui_notepad.h)。
向導創建的主窗口有自己的布局,我們可以在這個主窗口上添加菜單欄、停靠控件、工具欄和狀態欄等。工具欄下方和狀態欄上方之間的中心區域通常稱為客戶端,客戶端可以被任何類型的控件占用,我們可以從工具箱里把控件拖到主窗口中。

圖2-47
下面我們把控件添加到主窗口中:
雙擊“項目”視圖中的notepad.ui文件,啟動Qt界面設計器。
將文本編輯框(Text Edit)控件拖放到表單中。
在工具欄上單擊垂直布局(或按快捷鍵Ctrl+L),如圖2-48所示。

圖2-48
設置垂直布局后,可以發現文本編輯框充滿了整個主窗口的客戶區。
按快捷鍵Ctrl+S來保存我們所做的設計。
notepad.ui其實是一個xml文本文件,如果對notepad.ui好奇,可以看看它的具體內容,我們在項目視圖上右擊notepad.ui,在彈出的快捷菜單中依次選擇“用…打開→普通文本編輯器”菜單選項,此時會在右邊的編輯窗口中顯示出notepad.ui的內容,很明顯它是xml文件,內容如下:

以下這行包含XML聲明,指定文檔中使用的XML版本和字符編碼:
<?xml version="1.0" encoding="utf-8"?>
文件的其余部分定義了記事本控件的UI元素。用戶界面文件與記事本類的頭文件和源文件一起使用。
(4)理解頭文件。我們在Qt Creator中打開notepad.h頭文件:

因為Notepad類是本程序的主窗口,且繼承自QMainWindow類,所以開頭要包含頭文件QMainWindow:
#include <QMainWindow>
這里要介紹一下宏Q_OBJECT,只有繼承了QObject類的類,才具有信號槽的能力(信號槽在后面的章節會具體講到,信號就是VC編程中的消息,槽就是消息處理函數)。所以,為了使用信號槽,必須繼承QObject類。凡是QObject子類(不管是直接子類還是間接子類),都應該在第一行代碼中寫上Q_OBJECT。不管是不是使用信號槽,都應該添加這個宏。這個宏的展開將為我們的類提供信號槽機制、國際化機制以及不基于C++ RTTI的反射能力。覺得不需要使用信號槽就不需要添加這個宏是錯誤的,因為其他很多操作都依賴于這個宏。
下面再來看看關鍵字explicit,該關鍵字用來修飾構造函數。在Windows下編寫程序的時候基本上沒有碰到這個關鍵字,那么這個關鍵字是做什么用的呢?關鍵字explicit可以禁止“單參數構造函數”被用于自動類型轉換。光看這一句似乎不太容易明白,下面舉個簡單的例子。

編譯能夠通過,執行結果為m_data=2。為什么會這樣呢?原來C++通過隱式轉換構造了一個臨時對象Test(2),將它賦給了t(這里調用了默認的構造函數,而不是重載的“=”,因為這是在對象創建的時候)。如果給構造函數加上關鍵字explicit,構造函數就變成了explicit Test(int a),再次編譯,編譯器就會報錯。這時只能顯式地使用構造函數Test t=Test(2)。
(4)保存項目并運行,然后可以在編輯框中輸入一些文本信息,運行結果如圖2-49所示。

圖2-49
13. 在Qt Creator中使用單步調試功能
前面我們安裝了調試器CDB,Qt Creator 4.8.2能自動檢測到。我們重新啟動Qt Creator 4.8.2,依次單擊主菜單的菜單選項“工具→選項”來打開選項對話框,在左邊選擇Kits,然后在右邊“構建套件(Kit)”頁面中把滾動條往下拉一些,可以看到調試器旁邊已經自動檢測到CDB了,如圖2-50所示。

圖2-50
那到底能不能進行單步調試呢?我們用一個小例子來驗證一下。
【例2.6】 通過控制臺程序來驗證Qt Creator 4.8.2的單步調試
(1)啟動Qt Creator 4.8.2,新建一個控制臺項目,項目名為test。
(2)我們準備定義一個全局函數test,然后在main函數中調用該函數,打開main.cpp,添加代碼如下:

我們把光標定位到main函數中的“test();”那一行,然后按F9鍵,此時該行開頭將出現一個小紅圈(設置斷點),如圖2-51所示。
這就意味著,當程序進入調試模式時將執行到該行處暫停。也可以直接用鼠標設置斷點。
下面我們按F5鍵開始調試程序,稍等片刻,可以發現程序運行到斷點處就停住了,而且小紅圈中間出現了一個黃色小箭頭,如圖2-52所示。

圖2-51

圖2-52
此時按F11鍵,開始單步調試,如果碰到函數,就會進入函數體內部,可以發現小箭頭到test函數內的第一行語句處,如圖2-53所示。
這就說明單步調試功能正常。接下來按F10鍵,會發現程序繼續單步往下執行,當單步執行完puts函數時,就會發現在控制臺輸出窗口中輸出了“hello world”,如圖2-54所示。

圖2-53

圖2-54
通過這個小例子,我們驗證了Qt Creator 4.8.2單步調試功能。這個過程看似很順利、很簡單,但是只要上述步驟隨便錯了一個次序就會走進黑暗的胡同。
2.1.2 搭建基于GCC編譯器的開發環境
選擇這種開發環境就是和VC完全脫鉤了,因此要準備一臺沒有安裝VC版本的計算機。雙擊下載好的安裝文件qt-opensource-windows-x86-5.12.2,然后單擊“下一步”按鈕。安裝路徑依舊使用默認值,如圖2-55所示。
然后單擊“下一步”按鈕,此時將出現“選擇組件”對話框。勾選“Qt 5.12.2”并展開,然后取消對前3個子選項(MSVC開頭的)的勾選,如圖2-56所示。

圖2-55

圖2-56
注意,“MiniGW 7.3.0 32-bit”和“MiniGW 7.3.0 64-bit”一定要勾選上,因為這兩個組件模擬了Linux程序運行所需的系統環境,使得GCC和GDB可以在其上運行,這兩個組件同時還提供了編譯器GCC和調試器GDB。
隨后就一直單擊“下一步”按鈕,直到安裝完成。安裝完畢后,我們來驗證一下。
【例2.7】 驗證測試Qt Creator+GCC+GDB開發環境
啟動Qt Creator,然后新建一個Widgets項目,在選擇開發工具的時候會出現兩個已經安裝的工具(32位和64位兩個版本),如圖2-57所示。
因為筆者的Windows 7是64位的,所以選擇第二個64位的 MinGW。然后單擊“下一步”按鈕,直到完成。最后按Ctrl+R快捷鍵運行項目,結果如圖2-58所示。

圖2-57

圖2-58
2.1.3 部署Qt 4.7.4開發環境
剛進入公司的人往往會被安排從事維護老項目的工作,而老項目不少是用老版本的Qt開發的,比如Qt 4.7.4。為了照顧這些老項目,我們介紹一下在Windows下的Qt 4.7.4開發環境。當然,這部分內容不會介紹很多,只是為了讓大家快速上手。
1. 下載IDE和開發包
這里我們使用Qt Creator 2.4.1這個IDE來開發Qt 4的程序。總共需要下載兩個軟件,一個是qt-creator-win-opensource-2.4.1.exe,另外一個是基于MinGW(用于Windows的GNU開發環境)的Qt 4.7.4開發庫qt-win-opensource-4.7.4-mingw.exe。這兩個軟件都可以從官網下載,下載地址為http://download.qt.io/archive/qt/4.7/。
2. 安裝Qt Creator
軟件下載下來之后,先安裝qt-creator-win-opensource-2.4.1.exe,安裝過程和普通Windows程序安裝過程一樣簡單。直接雙擊安裝文件啟動安裝程序,第一步如圖2-59所示。
一路單擊Next按鈕,到了確定安裝路徑的時候,要注意安裝路徑不能有空格或中文,如圖2-60所示。
稍等片刻即可安裝完畢。

圖2-59

圖2-60
3. 安裝qt-win-opensource-4.7.4-mingw.exe
接著安裝qt-creator-win-opensource-2.4.1.exe,直接雙擊啟動安裝程序,第一步如圖2-61所示。
一路單擊Next按鈕,如圖2-62所示。

圖2-61

圖2-62
繼續一路單擊Next按鈕,到了安裝MinGW時,需要確定已經安裝的MinGW路徑,前面已經安裝了MinGW,因此不需要重新安裝。這里修改MinGW所在的路徑,如圖2-63所示。
單擊Install按鈕,稍等片刻即可安裝完成,如圖2-64所示。

圖2-63

圖2-64
單擊Finish按鈕,Demo例子就開始運行了,如圖2-65所示。
至此,Qt 4開發環境安裝成功。

圖2-65
4. 為Qt Creator關聯Qt
啟動Qt Creator,依次單擊主菜單的菜單選項“工具→選項→構建和運行→Qt版本→手動設置→添加”,而后添加C:\Qt\4.7.4\bin\中的qmake.exe文件即可,如圖2-66所示。

圖2-66
最后單擊“確定”按鈕。
5. 第一個Qt 4.7控制臺程序
通常把在控制臺(命令行窗口)中運行的程序稱為Qt控制臺應用程序,而擁有圖形界面的Qt程序稱為Qt quick應用程序。控制臺應用程序很簡單,相信大家學習C語言的時候已經用得很熟練,這里就不再贅述了。很多C語言書上開頭都會有一個“Hello World”程序,它的代碼通常是這樣的:

下面我們也來編寫一個Qt版本的“Hello World”控制臺程序,作為第一個Qt 4程序。這個程序很簡單,就是在命令行窗口中顯示一段文本“Hello World”。
【例2.8】 第一個Qt 4控制臺程序
(1)啟動Qt Creator 2.4,依次單擊主菜單的菜單選項“文件→新建文件或項目”,或直接按快捷鍵Ctrl+N,彈出“新建”對話框。在該對話框的左側選擇“其他項目”,在右側選中“Qt4控制臺應用”,如圖2-67所示。

圖2-67
(2)單擊“選擇”按鈕,然后在新出現的對話框中輸入項目名稱和路徑(即項目名稱和路徑。注意,Qt軟件中前后翻譯不一致,其實工程就是指項目),如圖2-68所示。如前文所述,路徑必須是已經存在的路徑。

圖2-68
單擊“下一步”按鈕,保持默認設置,如圖2-69所示。

圖2-69
繼續單擊“下一步”按鈕,在新出現的項目管理對話框中保持默認設置,最后單擊“完成”按鈕。此時會出現代碼編輯窗口,里面已經為我們寫好了幾行程序代碼:

是不是比較熟悉?有main函數,就知道程序的入口點了。
此時程序是可以運行的(按Ctrl+R快捷鍵),但是沒有任何輸出。下面我們添加一條打印語句,代碼如下:

(3)保存項目并運行(按Ctrl+R快捷鍵),結果如圖2-70所示。
第一個Qt 4控制臺程序就完成了。
在進入界面程序開發之前,先介紹一下Qt Quick。它是一種用qml語言開發的庫,集成了很多絢麗的UI開發元素,能自動轉化為C++語言,非常適用于開發APP和嵌入式設備等要求界面沖擊感強的應用。Qt Quick利用一種類似JavaScript的qml語言進行開發,代碼看上去就是JSON字符串的應用,對于C++水平不高的人來說是一項福利。
【例2.9】 第一個Qt 4界面程序
新建一個Qt Quick程序,一路保持默認設置,運行結果如圖2-71所示。

圖2-70

圖2-71
- Node.js Design Patterns
- 從零開始:數字圖像處理的編程基礎與應用
- JavaFX Essentials
- 青少年美育趣味課堂:XMind思維導圖制作
- Java技術手冊(原書第7版)
- 精通軟件性能測試與LoadRunner實戰(第2版)
- Hands-On JavaScript High Performance
- Mastering Unity Shaders and Effects
- 深度強化學習算法與實踐:基于PyTorch的實現
- Android Native Development Kit Cookbook
- Apache Spark 2.x for Java Developers
- Python深度學習原理、算法與案例
- Julia for Data Science
- .NET Standard 2.0 Cookbook
- 大學計算機基礎實訓教程