官术网_书友最值得收藏!

2.1.3 項(xiàng)目模式和項(xiàng)目文件

按下快捷鍵Ctrl+5或者單擊“項(xiàng)目”圖標(biāo),可以進(jìn)入項(xiàng)目模式。如果現(xiàn)在沒有打開任何項(xiàng)目,則項(xiàng)目模式是不可用的。項(xiàng)目模式分為構(gòu)建和運(yùn)行、編輯器、代碼風(fēng)格、依賴關(guān)系等多個(gè)設(shè)置頁面,如圖2-9所示。如果當(dāng)前打開了多個(gè)項(xiàng)目,那么在界面上方會(huì)分別列出這些項(xiàng)目,可以選擇自己要設(shè)置的項(xiàng)目。

圖2-9 項(xiàng)目模式

在“構(gòu)建和運(yùn)行”頁面可以設(shè)置要構(gòu)建的版本,如Debug版本、Profile版本或Release版本。這3個(gè)版本的區(qū)別是:Debug版本程序包含了調(diào)試信息,可以用來調(diào)試,但生成的可執(zhí)行文件很大;而真正發(fā)布程序時(shí)要使用Release版本,不帶任何調(diào)試符號(hào)信息,并且進(jìn)行了多種優(yōu)化;另外,Profile是概述版本,帶有部分調(diào)試符號(hào)信息,在Debug版本和Release版本之間取一個(gè)平衡,兼顧性能和調(diào)試,性能較優(yōu)且方便調(diào)試。

這里有一個(gè)“Shadow build”選項(xiàng),就是所謂的“影子構(gòu)建”,其作用是將項(xiàng)目的源碼和編譯生成的文件分別存放,就像前面創(chuàng)建項(xiàng)目時(shí)看到的,helloworld項(xiàng)目經(jīng)編譯構(gòu)建為Debug版本后會(huì)生成build-helloworld-Desktop_Qt_6_5_0_MinGW_64_bit-Debug文件夾,里面放著編譯生成的所有文件。將編譯輸出與源碼分別存放是個(gè)很好的習(xí)慣,尤其在使用多個(gè)Qt版本進(jìn)行編譯時(shí)更是如此?!癝hadow build”選項(xiàng)默認(rèn)是選中的,如果想讓源碼和編譯生成的文件放在同一個(gè)目錄下,那么也可以將這個(gè)選項(xiàng)取消勾選?!皹?gòu)建的步驟”“清除的步驟”和“構(gòu)建環(huán)境Build Environment”等選項(xiàng)一般不用設(shè)置,如果對(duì)編譯命令不是很熟悉,這里的設(shè)置保持默認(rèn)即可。

在“編輯器”設(shè)置頁面中,可以設(shè)置默認(rèn)的文件編碼、制表符和縮進(jìn)、鼠標(biāo)和鍵盤的相關(guān)功能,這些都是默認(rèn)的全局設(shè)置,一般不建議修改,當(dāng)然也可以按照自己的習(xí)慣進(jìn)行自定義設(shè)置;在“代碼風(fēng)格”設(shè)置頁面中,可以自定義代碼風(fēng)格,還可以將代碼風(fēng)格文件導(dǎo)出或者導(dǎo)入,這里默認(rèn)使用了Qt的代碼風(fēng)格;如果同時(shí)打開了多個(gè)項(xiàng)目,在“依賴關(guān)系”設(shè)置頁面中,可以設(shè)置它們之間的依賴關(guān)系;Qt Creator集成的Clang Tools可以通過靜態(tài)分析來發(fā)現(xiàn)C、C++和Objective-C代碼中的問題,具體使用方法可以在幫助中通過Using Clang Tools關(guān)鍵字查看。對(duì)于初學(xué)者而言,這些選項(xiàng)一般都不需要更改,這里不作過多介紹。

下面我們看一下例2-1(即源碼路徑為src\02\2-1的程序)中helloworld項(xiàng)目的helloworld.pro項(xiàng)目文件的內(nèi)容:

1  QT       += core gui
2 
3  greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
4 
5  CONFIG += c++17
6 
7  # You can make your code fail to compile if it uses deprecated APIs.
8  # In order to do so, uncomment the following line.
9  #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 
10 
11 SOURCES += \
12      main.cpp \
13      hellodialog.cpp
14 
15 HEADERS += \
16      hellodialog.h
17 
18 FORMS += \
19      hellodialog.ui

第1行聲明了這個(gè)項(xiàng)目使用的模塊。core模塊包含了Qt的核心功能,其他所有模塊都依賴于這個(gè)模塊;而gui模塊提供了窗口系統(tǒng)集成、事件處理、OpenGL和OpenGL ES集成、2D圖形、基本圖像、字體和文本等功能。當(dāng)使用qmake工具來構(gòu)建項(xiàng)目時(shí),core模塊和gui模塊是被默認(rèn)包含的,也就是說,編寫項(xiàng)目文件時(shí)不添加這兩個(gè)模塊也是可以編譯的。其實(shí),模塊就是很多相關(guān)類的集合。讀者可以在Qt幫助中通過Qt Core和Qt GUI關(guān)鍵字來查看這兩個(gè)模塊的相關(guān)內(nèi)容。第3行添加了widgets模塊。這行代碼的意思是,如果Qt主版本大于4(也就是說當(dāng)前使用的是Qt 5或者更高版本),則需要添加widgets模塊。其實(shí),直接使用“QT += widgets”也是可以的,但是為了保持與Qt 4的兼容性,建議使用本例中的這種方式。Qt Widgets模塊提供了經(jīng)典的桌面用戶界面的UI元素集合,簡(jiǎn)單來說,所有C++程序用戶界面部件都在該模塊中。第5行開啟對(duì)C++17的支持。第7~9行是注釋信息,第7行和第8行的意思是,如果取消第9行的注釋,那么當(dāng)自己的代碼使用了Qt 6中已經(jīng)標(biāo)記為過時(shí)的API,編譯時(shí)就會(huì)出錯(cuò)。第11~19行分別是項(xiàng)目中包含的源文件、頭文件和表單文件。這些文件都使用了相對(duì)路徑,因?yàn)槎荚陧?xiàng)目目錄中,所以只寫了文件名。

這里還要簡(jiǎn)單介紹一下那個(gè)在項(xiàng)目目錄中生成的.pro.user文件,它其實(shí)是一個(gè)XML文檔,包含了本地構(gòu)建信息,例如Qt版本和構(gòu)建目錄等??梢杂糜浭卤净蛘邔懽职宕蜷_這個(gè)文件,以查看其內(nèi)容。使用Qt Creator打開一個(gè).pro文件時(shí),會(huì)自動(dòng)生成一個(gè).pro.user文件。因?yàn)樽x者的系統(tǒng)環(huán)境都不太一樣,Qt的安裝與設(shè)置也不盡相同,所以如果要將自己的源碼公開,那么不需要包含這個(gè).user文件。如果要打開別人的項(xiàng)目文件,但里面包含了.user文件,則Qt Creator會(huì)彈出提示對(duì)話框,詢問是否載入特定的環(huán)境設(shè)置,這時(shí)應(yīng)該選擇“否”,然后選擇自己的Qt套件即可。

主站蜘蛛池模板: 洮南市| 汾阳市| 泾阳县| 石泉县| 资中县| 嘉黎县| 宜州市| 大方县| 阿尔山市| 阿尔山市| 防城港市| 章丘市| 和龙市| 安康市| 临沭县| 延安市| 玉环县| 神农架林区| 满城县| 桦南县| 霞浦县| 临桂县| 乐业县| 天门市| 株洲县| 黄大仙区| 汉川市| 靖边县| 日喀则市| 香格里拉县| 饶平县| 女性| 镇远县| 文安县| 合阳县| 海晏县| 阿合奇县| 深圳市| 习水县| 陈巴尔虎旗| 岳池县|