Qt項(xiàng)目組織結(jié)構(gòu)

當(dāng)我們新建一個(gè)Qt Application項(xiàng)目時(shí),Qt會(huì)自動(dòng)為我們完成所需信息的配置工作和基礎(chǔ)代碼的編寫工作,整個(gè)項(xiàng)目的組織結(jié)構(gòu)如圖1.1所示。


圖1.1 項(xiàng)目的組織結(jié)構(gòu)圖

Qt自動(dòng)為我們將相關(guān)代碼文件分為頭文件、源文件和界面文件,并分別進(jìn)行管理。其中頭文件的.h文件和源文件中對(duì)應(yīng)的.cpp文件完成了“相關(guān)類”的代碼編寫工作。源文件中的main.cpp是整個(gè)項(xiàng)目的運(yùn)行基礎(chǔ),是第一個(gè)運(yùn)行的文件。界面文件中的.ui文件記錄了整個(gè)項(xiàng)目的GUI編輯情況,對(duì)GUI的設(shè)計(jì)即是對(duì)該.ui文件的修改。在一個(gè)Qt項(xiàng)目中以上這些相關(guān)代碼文件都容易理解,唯獨(dú).pro需要特別注意,因?yàn)?pro文件是整個(gè)項(xiàng)目底層的環(huán)境配置文件。下面我會(huì)對(duì).pro文件進(jìn)行更加詳細(xì)的分析和描述。

PRO文件

在Qt中,PRO文件標(biāo)識(shí)了整個(gè)項(xiàng)目的依賴關(guān)系,Qt自帶的工具qmake可根據(jù)PRO文件中記錄的依賴關(guān)系自動(dòng)生成適合不同平臺(tái)的Makefile文件。本文中我打算針對(duì)與采用的案例密切相關(guān)的幾個(gè)要素給出詳細(xì)的分析和示例。如果想了解更多的PRO文件的配置參數(shù)信息可參考Qt pro文件解析。
books.pro文件的詳細(xì)內(nèi)容如下:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = books
TEMPLATE  = app
SOURCES  += main.cpp\
        dialog.cpp
HEADERS  += dialog.h
FORMS    += dialog.ui

在上述代碼中,Qt行表示Qt使用的核心模塊,core表示Qt內(nèi)核,對(duì)應(yīng)qtcore模塊,幾乎所有Qt程序都要添加該項(xiàng);gui表示圖形界面,對(duì)應(yīng)qtgui模塊,如果程序中使用了界面資源,則需要添加該項(xiàng)。這一行很少改動(dòng),如果需要改動(dòng),則大多加上

Qt += core gui network

表示使用Qt網(wǎng)絡(luò)功能模塊。其他可選選項(xiàng)包括core、gui、widgets、network、xml、quick、multimedia、webkit等。

第2行是進(jìn)行版本控制,如果版本大于4,則使用widgets實(shí)現(xiàn)界面處理。這主要用于兼容舊版本Qt程序。
第3行是EXE程序輸出的文件名,一般不做修改。
第4行表示程序類型,是比較重要的一行。app表示程序是一個(gè)應(yīng)用程序,qmake編譯器將根據(jù)它輸出EXE格式的文件,可選值還包括lib,qmake生成一個(gè)DLL或靜態(tài)lib;subdirs子目錄項(xiàng)目;vcapp生成適合VC項(xiàng)目的文件,如.vcproj等。
第5行表示程序使用的代碼文件,包括所有的CPP文件。
第7行是程序使用的頭文件。
第8行表示使用的對(duì)話框界面資源。

不建議手動(dòng)修改PRO文件,如果有需要?jiǎng)t一般只修改Qt行來增加Qt模塊。增加新的CPP文件或頭文件時(shí)可直接在相應(yīng)項(xiàng)目里新建添加,添加的結(jié)果也會(huì)自動(dòng)反映到第5、第7行,不需要手動(dòng)修改。另外一項(xiàng)需要手動(dòng)修改的值是LIBS,它表示Qt程序使用到的第三方庫(kù),在Windows中是DLL文件。

Qt在編譯項(xiàng)目時(shí)采用了“影子編譯”的方式。之所以稱為影子編譯,是因?yàn)镼t將代碼目錄和編譯后生成的目錄進(jìn)行分離,用戶復(fù)制代碼時(shí)可只將重要的代碼分布存儲(chǔ),而編譯產(chǎn)生的各種體積較大的臨時(shí)文件則被分離出來。相比復(fù)制VC項(xiàng)目目錄時(shí)要復(fù)制很多的臨時(shí)編譯文件,Qt影子編譯選項(xiàng)實(shí)現(xiàn)了輕量化操作。另外,用戶可單擊圖1.1左側(cè)的“項(xiàng)目”按鈕,進(jìn)行編譯選項(xiàng)的配置,其中可以直接修改構(gòu)建目錄地址。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.Qt概述 1.1 什么是Qt Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它為應(yīng)用程序開發(fā)者提供建立藝術(shù)...
    你的社交帳號(hào)昵閱讀 8,875評(píng)論 0 10
  • 15.Qt 和 C++(Qt and C++) 本章的作者:jryannel ** 注意: **最新的構(gòu)建時(shí)間:2...
    趙者也閱讀 1,291評(píng)論 0 3
  • Qt是屬于一個(gè)跨平臺(tái)的GUI開發(fā)軟件,支持的平臺(tái)有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一葉之界閱讀 8,407評(píng)論 0 17
  • 現(xiàn)在是個(gè)普遍焦慮的時(shí)代,人們都在絞盡腦汁地提升自己的能力,各種各樣的秘訣與妙招層出不窮,好像學(xué)東西真的有什么捷徑一...
    蕭寒淺閱讀 350評(píng)論 1 2
  • 沈熹離世后的第二年春天,周子成醒了。 無(wú)風(fēng)不起浪,周周想,她還真該信了那些謠言,去查一查當(dāng)年周子成的事故是不是真的...
    廣電1701B梁賽賽閱讀 573評(píng)論 0 0

友情鏈接更多精彩內(nèi)容