Qt創(chuàng)建項(xiàng)目實(shí)戰(zhàn)之手把手創(chuàng)建第一個(gè)Qt項(xiàng)目
前言
上一節(jié)介紹了QtCreator編輯器的頁面長什么樣子,以及都有哪些功能區(qū),每個(gè)功能區(qū)都是用來做什么的。這一節(jié)我就手把手帶大家創(chuàng)建一個(gè)Qt項(xiàng)目。
創(chuàng)建項(xiàng)目
點(diǎn)擊新建按鈕
創(chuàng)建項(xiàng)目有兩個(gè)入口,一個(gè)是在歡迎頁面的projects中點(diǎn)擊New(新建)按鈕,另一個(gè)是點(diǎn)擊標(biāo)題欄中的文件,在文件下拉列表中點(diǎn)擊新建文件或項(xiàng)目。

選擇模板
點(diǎn)擊新建以后,會(huì)彈出一個(gè)模板選擇窗口,我們這里應(yīng)該選擇Application下面的Qt Widget Application。右邊是對(duì)這個(gè)模板的解釋。這是一個(gè)桌面Qt應(yīng)用,包含一個(gè)基于Qt設(shè)計(jì)師的主窗體。選擇好之后,點(diǎn)擊Choose進(jìn)入下一步。

點(diǎn)擊Choose之后,會(huì)彈出一個(gè)多步驟設(shè)置彈窗。
多步驟設(shè)置
第一步:Location(項(xiàng)目介紹和位置)。

- 我們?cè)?“名稱” 一欄中,可以輸入項(xiàng)目的名稱,例如“FistProject”。注意: 項(xiàng)目名稱不能包含空格和中文。
- 在 “創(chuàng)建路徑” 一欄中,可以選擇項(xiàng)目創(chuàng)建的位置,即我們想將創(chuàng)建的項(xiàng)目文件保存在哪里。注意: 路徑中同樣不可以出現(xiàn)中文,如果路徑中有中文,那你創(chuàng)建的項(xiàng)目雖然可以創(chuàng)建成功,但是是運(yùn)行不起來的。
- “設(shè)為默認(rèn)的項(xiàng)目路徑” 勾選框,如果勾選上,那下次創(chuàng)建的項(xiàng)目會(huì)自動(dòng)保存在我們?cè)O(shè)置的路徑下。這里可選可不選。 然后點(diǎn)擊下一步,進(jìn)入到構(gòu)建系統(tǒng)。
第二步:Build System(構(gòu)建系統(tǒng))

“build system” 一欄是一個(gè)下拉框,可以選擇qmake、CMake、Qbs。我們這里選擇qmake,來幫助我們實(shí)現(xiàn)構(gòu)建過程。然后點(diǎn)擊下一步,進(jìn)入到項(xiàng)目信息。
第三步:Details(項(xiàng)目信息)

這里是用來設(shè)置項(xiàng)目的主窗口信息的。
- 我們?cè)?“Class Name” 一欄中,可以輸入主窗口的類名,可以自定義一個(gè)名字,例如“MyWidget”。
- 我們?cè)?“Base Class” 一欄中,可以選擇主窗口的基類,這里有三個(gè)選項(xiàng):QMAinWindow、QWidget、QDialog。我們這里選擇QWidget。
- Header file、Source file、Form file 這三項(xiàng)是不需要我們手動(dòng)輸入的,當(dāng)我們?cè)谠O(shè)置主窗口類名時(shí),這三項(xiàng)的內(nèi)容是會(huì)跟隨變化的。他們?nèi)齻€(gè)分別表示了頭文件名稱(.h)、源文件名稱(.cpp)、界面文件名稱(.ui)。
注:QMainWindow、QWidget、QDialog三者的關(guān)系:
- QWidget 是QMainWindow和QDialog的父類。
- QWidget 是一個(gè)最簡單的窗口,這個(gè)窗口被創(chuàng)建出來后,窗口內(nèi)部什么都沒有。
- QMainWindow 在窗口內(nèi)部包含了菜單欄,還包含一些工具以及狀態(tài)欄等。
- QDialog是一個(gè)對(duì)話框。對(duì)話框是在一個(gè)窗口中彈出來的窗口,一般會(huì)擁有兩個(gè)選擇按鈕,例如確定和取消。
然后點(diǎn)擊下一步進(jìn)入翻譯文件。
第四步:Translation(翻譯文件)

第五步:Kits(構(gòu)建套件)

第六步:Summary(匯總)

創(chuàng)建好的項(xiàng)目在QtCreator中長這個(gè)樣子:

我們?cè)谧笊?strong>項(xiàng)目窗口可以看到我們創(chuàng)建的項(xiàng)目包含了哪些文件,首先有一個(gè).pro文件,接下來是頭文件,然后是源文件,最后是ui文件。其中MyWidget.h和MyWidget.cpp以及MyWidget.ui使我們?cè)趧?chuàng)建項(xiàng)目過程中自己設(shè)置的主窗口的相關(guān)文件。而FirstProject.pro文件和main.cpp文件是自動(dòng)創(chuàng)建出來的文件。那么FirstProject.pro文件和main.cpp文件又是做什么的呢?
main文件介紹

頭文件
首先,我們先介紹main文件引入的頭文件:
- mywidget.h: 這是我們主窗口類的頭文件。
- QApplication: 這是一個(gè)應(yīng)用程序類的頭文件。
main函數(shù)
然后,我們介紹一下main函數(shù):
- main函數(shù)是我們這個(gè)項(xiàng)目的程序入口。它有兩個(gè)參數(shù),一個(gè)是argc,代表命令行變量的數(shù)量;一個(gè)是argv,代表命令行變量的數(shù)組。
- 在程序中,程序中有各種各樣的操作,比如鼠標(biāo)點(diǎn)擊、鍵盤輸入等等,這些操作都是通過argc和argv這兩個(gè)參數(shù)接收到命令的。
- 在main函數(shù)中,將argc和argv這兩個(gè)參數(shù)傳遞到用QApplication創(chuàng)建的a對(duì)象中。這個(gè)a就是一個(gè)應(yīng)用程序?qū)ο蟆T赒t中,應(yīng)用程序?qū)ο笥星覂H有一個(gè)。
- MyWidget類創(chuàng)建一個(gè)w對(duì)象,這個(gè)w就是我們的主窗口,創(chuàng)建了之后窗口是不會(huì)顯示的,需要再調(diào)用show方法將主窗口顯示出來。
- return a.exec(); 這句代碼是讓應(yīng)用程序?qū)ο?a)進(jìn)入消息循環(huán)機(jī)制。這個(gè)消息循環(huán)機(jī)制可以理解為一個(gè)死循環(huán),讓我們的程序窗口能夠持續(xù)顯示在屏幕上,并沒有因?yàn)閳?zhí)行完代碼就立即退出。這個(gè)時(shí)候這個(gè)消息循環(huán)一直在捕獲窗口中的消息,當(dāng)接收到我們點(diǎn)擊關(guān)閉按鈕后,才會(huì)退出消息循環(huán),然后return掉,退出程序。實(shí)際上就是讓代碼阻塞到return a.exec();這一行,不讓它往下執(zhí)行。
pro文件介紹

pro文件也叫工程文件,文件中以#號(hào)開頭綠色的部分是注釋部分。這個(gè)文件我們只需要知道它是干嘛就可以了,非必要情況,不要?jiǎng)舆@里面的代碼。
- 第一部分: Qt包含的模塊。core代表核心模塊,gui代表圖形模塊。除了這兩個(gè)模塊以外還有其它的模塊,例如network、multimedia、sql等等。需要哪個(gè)模塊,在后面添加哪個(gè)模塊就可以了。
- 第二部分: greaterThan(QT_MAJOR_VERSION, 4): QT += widgets:表示大于Qt4版本以上,會(huì)包含widgets模塊。也就是Qt5版本以后,會(huì)多一個(gè)模塊。保證不管是4版本還是5版本,程序運(yùn)行都沒問題。
- 第三部分: 表明使用C++11的標(biāo)準(zhǔn)進(jìn)行編譯。C++11 是現(xiàn)在的 C++ 標(biāo)準(zhǔn)的名稱,在 Qt5 中,提供更多 C++11 的特性支持。
- 第四部分: 是定義編譯選項(xiàng)。QT_DEPRECATED_WARNINGS表示當(dāng)Qt的某些功能被標(biāo)記為過時(shí)的,那么編譯器會(huì)發(fā)出警告。
- 第五、六、七部分: 工程中包含的源文件、頭文件、ui文件有哪些。
- 第八部分: Qt部署的一些默認(rèn)規(guī)則。這里配置了在unix或者qnx系統(tǒng)生成的文件目錄。
這些都不用動(dòng),這都是系統(tǒng)生成的,以后進(jìn)階開發(fā)中有需要的時(shí)候才會(huì)涉及到配置這些東西。
除了以上這八個(gè)部分以外,有些同學(xué)創(chuàng)建出來的pro文件中還會(huì)包含一些其他東西,比如:
- TARGET=MyWidget: 這是目標(biāo)生成的.exe程序的名稱。這里是什么,你生成的exe的名稱就是什么。
- TEMPLATE = app: 這是應(yīng)用程序模板。app說明這個(gè)應(yīng)用程序模板是Application。除了app,還有l(wèi)ib(庫)、vcapp、vclib、subdirs。
以上就是我們手把手創(chuàng)建項(xiàng)目的過程,以及對(duì)創(chuàng)建的項(xiàng)目中文件信息的講解。了解這些知識(shí),對(duì)我們后續(xù)的開發(fā)有至關(guān)重要的作用。我們?cè)趯W(xué)習(xí)過程中一定要追根溯源,不能只停留在表面知識(shí)。
在創(chuàng)建完一個(gè)項(xiàng)目之后,我們就要往里面加?xùn)|西了,也就是開發(fā)一個(gè)項(xiàng)目,后面我會(huì)繼續(xù)詳細(xì)講解開發(fā)一個(gè)項(xiàng)目的過程,以及我們首先需要掌握的一些基礎(chǔ)知識(shí),一起去看看吧!
最后
到此這篇關(guān)于Qt創(chuàng)建項(xiàng)目實(shí)戰(zhàn)之手把手創(chuàng)建第一個(gè)Qt項(xiàng)目的文章就介紹到這了,更多相關(guān)Qt項(xiàng)目創(chuàng)建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ Boost Algorithm算法超詳細(xì)精講
Boost.Algorithm 提供了補(bǔ)充標(biāo)準(zhǔn)庫算法的算法。與 Boost.Range 不同,Boost.Algorithm 沒有引入新概念。 Boost.Algorithm 定義的算法類似于標(biāo)準(zhǔn)庫中的算法2022-10-10
QT使用Http協(xié)議通信的實(shí)現(xiàn)示例
使用QT進(jìn)行應(yīng)用開發(fā)時(shí),有時(shí)候需要進(jìn)行客戶端和服務(wù)端的網(wǎng)絡(luò)通信,本文主要介紹了QT使用Http協(xié)議通信的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
C++實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)的示例代碼
停車場(chǎng)管理系統(tǒng)就是模擬停車場(chǎng)進(jìn)行車輛管理的系統(tǒng),該系統(tǒng)分為汽車信息模塊,用戶使用模塊和管理員用戶模塊,本文將用C++實(shí)現(xiàn)這一簡單的系統(tǒng),希望對(duì)大家有所幫助2023-04-04

