Qt創(chuàng)建項目實戰(zhàn)之手把手創(chuàng)建第一個Qt項目
前言
上一節(jié)介紹了QtCreator編輯器的頁面長什么樣子,以及都有哪些功能區(qū),每個功能區(qū)都是用來做什么的。這一節(jié)我就手把手帶大家創(chuàng)建一個Qt項目。
創(chuàng)建項目
點擊新建按鈕
創(chuàng)建項目有兩個入口,一個是在歡迎頁面的projects中點擊New(新建)按鈕,另一個是點擊標(biāo)題欄中的文件,在文件下拉列表中點擊新建文件或項目。
選擇模板
點擊新建以后,會彈出一個模板選擇窗口,我們這里應(yīng)該選擇Application下面的Qt Widget Application。右邊是對這個模板的解釋。這是一個桌面Qt應(yīng)用,包含一個基于Qt設(shè)計師的主窗體。選擇好之后,點擊Choose進入下一步。
點擊Choose之后,會彈出一個多步驟設(shè)置彈窗。
多步驟設(shè)置
第一步:Location(項目介紹和位置)。
- 我們在 “名稱” 一欄中,可以輸入項目的名稱,例如“FistProject”。注意: 項目名稱不能包含空格和中文。
- 在 “創(chuàng)建路徑” 一欄中,可以選擇項目創(chuàng)建的位置,即我們想將創(chuàng)建的項目文件保存在哪里。注意: 路徑中同樣不可以出現(xiàn)中文,如果路徑中有中文,那你創(chuàng)建的項目雖然可以創(chuàng)建成功,但是是運行不起來的。
- “設(shè)為默認的項目路徑” 勾選框,如果勾選上,那下次創(chuàng)建的項目會自動保存在我們設(shè)置的路徑下。這里可選可不選。 然后點擊下一步,進入到構(gòu)建系統(tǒng)。
第二步:Build System(構(gòu)建系統(tǒng))
“build system” 一欄是一個下拉框,可以選擇qmake、CMake、Qbs。我們這里選擇qmake,來幫助我們實現(xiàn)構(gòu)建過程。然后點擊下一步,進入到項目信息。
第三步:Details(項目信息)
這里是用來設(shè)置項目的主窗口信息的。
- 我們在 “Class Name” 一欄中,可以輸入主窗口的類名,可以自定義一個名字,例如“MyWidget”。
- 我們在 “Base Class” 一欄中,可以選擇主窗口的基類,這里有三個選項:QMAinWindow、QWidget、QDialog。我們這里選擇QWidget。
- Header file、Source file、Form file 這三項是不需要我們手動輸入的,當(dāng)我們在設(shè)置主窗口類名時,這三項的內(nèi)容是會跟隨變化的。他們?nèi)齻€分別表示了頭文件名稱(.h)、源文件名稱(.cpp)、界面文件名稱(.ui)。
注:QMainWindow、QWidget、QDialog三者的關(guān)系:
- QWidget 是QMainWindow和QDialog的父類。
- QWidget 是一個最簡單的窗口,這個窗口被創(chuàng)建出來后,窗口內(nèi)部什么都沒有。
- QMainWindow 在窗口內(nèi)部包含了菜單欄,還包含一些工具以及狀態(tài)欄等。
- QDialog是一個對話框。對話框是在一個窗口中彈出來的窗口,一般會擁有兩個選擇按鈕,例如確定和取消。
然后點擊下一步進入翻譯文件。
第四步:Translation(翻譯文件)
第五步:Kits(構(gòu)建套件)
第六步:Summary(匯總)
創(chuàng)建好的項目在QtCreator中長這個樣子:
我們在左上項目窗口可以看到我們創(chuàng)建的項目包含了哪些文件,首先有一個.pro文件,接下來是頭文件,然后是源文件,最后是ui文件。其中MyWidget.h和MyWidget.cpp以及MyWidget.ui使我們在創(chuàng)建項目過程中自己設(shè)置的主窗口的相關(guān)文件。而FirstProject.pro文件和main.cpp文件是自動創(chuàng)建出來的文件。那么FirstProject.pro文件和main.cpp文件又是做什么的呢?
main文件介紹
頭文件
首先,我們先介紹main文件引入的頭文件:
- mywidget.h: 這是我們主窗口類的頭文件。
- QApplication: 這是一個應(yīng)用程序類的頭文件。
main函數(shù)
然后,我們介紹一下main函數(shù):
- main函數(shù)是我們這個項目的程序入口。它有兩個參數(shù),一個是argc,代表命令行變量的數(shù)量;一個是argv,代表命令行變量的數(shù)組。
- 在程序中,程序中有各種各樣的操作,比如鼠標(biāo)點擊、鍵盤輸入等等,這些操作都是通過argc和argv這兩個參數(shù)接收到命令的。
- 在main函數(shù)中,將argc和argv這兩個參數(shù)傳遞到用QApplication創(chuàng)建的a對象中。這個a就是一個應(yīng)用程序?qū)ο?。在Qt中,應(yīng)用程序?qū)ο笥星覂H有一個。
- MyWidget類創(chuàng)建一個w對象,這個w就是我們的主窗口,創(chuàng)建了之后窗口是不會顯示的,需要再調(diào)用show方法將主窗口顯示出來。
- return a.exec(); 這句代碼是讓應(yīng)用程序?qū)ο?a)進入消息循環(huán)機制。這個消息循環(huán)機制可以理解為一個死循環(huán),讓我們的程序窗口能夠持續(xù)顯示在屏幕上,并沒有因為執(zhí)行完代碼就立即退出。這個時候這個消息循環(huán)一直在捕獲窗口中的消息,當(dāng)接收到我們點擊關(guān)閉按鈕后,才會退出消息循環(huán),然后return掉,退出程序。實際上就是讓代碼阻塞到return a.exec();這一行,不讓它往下執(zhí)行。
pro文件介紹
pro文件也叫工程文件,文件中以#號開頭綠色的部分是注釋部分。這個文件我們只需要知道它是干嘛就可以了,非必要情況,不要動這里面的代碼。
- 第一部分: Qt包含的模塊。core代表核心模塊,gui代表圖形模塊。除了這兩個模塊以外還有其它的模塊,例如network、multimedia、sql等等。需要哪個模塊,在后面添加哪個模塊就可以了。
- 第二部分: greaterThan(QT_MAJOR_VERSION, 4): QT += widgets:表示大于Qt4版本以上,會包含widgets模塊。也就是Qt5版本以后,會多一個模塊。保證不管是4版本還是5版本,程序運行都沒問題。
- 第三部分: 表明使用C++11的標(biāo)準進行編譯。C++11 是現(xiàn)在的 C++ 標(biāo)準的名稱,在 Qt5 中,提供更多 C++11 的特性支持。
- 第四部分: 是定義編譯選項。QT_DEPRECATED_WARNINGS表示當(dāng)Qt的某些功能被標(biāo)記為過時的,那么編譯器會發(fā)出警告。
- 第五、六、七部分: 工程中包含的源文件、頭文件、ui文件有哪些。
- 第八部分: Qt部署的一些默認規(guī)則。這里配置了在unix或者qnx系統(tǒng)生成的文件目錄。
這些都不用動,這都是系統(tǒng)生成的,以后進階開發(fā)中有需要的時候才會涉及到配置這些東西。
除了以上這八個部分以外,有些同學(xué)創(chuàng)建出來的pro文件中還會包含一些其他東西,比如:
- TARGET=MyWidget: 這是目標(biāo)生成的.exe程序的名稱。這里是什么,你生成的exe的名稱就是什么。
- TEMPLATE = app: 這是應(yīng)用程序模板。app說明這個應(yīng)用程序模板是Application。除了app,還有l(wèi)ib(庫)、vcapp、vclib、subdirs。
以上就是我們手把手創(chuàng)建項目的過程,以及對創(chuàng)建的項目中文件信息的講解。了解這些知識,對我們后續(xù)的開發(fā)有至關(guān)重要的作用。我們在學(xué)習(xí)過程中一定要追根溯源,不能只停留在表面知識。
在創(chuàng)建完一個項目之后,我們就要往里面加?xùn)|西了,也就是開發(fā)一個項目,后面我會繼續(xù)詳細講解開發(fā)一個項目的過程,以及我們首先需要掌握的一些基礎(chǔ)知識,一起去看看吧!
最后
到此這篇關(guān)于Qt創(chuàng)建項目實戰(zhàn)之手把手創(chuàng)建第一個Qt項目的文章就介紹到這了,更多相關(guān)Qt項目創(chuàng)建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C++循環(huán)創(chuàng)建多級目錄及判斷目錄是否存在的方法
這篇文章主要介紹了C++循環(huán)創(chuàng)建多級目錄及判斷目錄是否存在的方法,文中代碼有一個針對各種系統(tǒng)進行判斷來加載不同頭文件的方法,需要的朋友可以參考下2016-03-03詳解c++ atomic原子編程中的Memory Order
在多核編程中,我們使用內(nèi)核對象【如:事件對象(Event)、互斥量對象(Mutex,或互斥體對象)、信號量對象(Semaphore)等】來避免多個線程修改同一個數(shù)據(jù)時產(chǎn)生的競爭條件。本文將詳細介紹c++ atomic原子編程中的Memory Order。2021-06-06淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別
這篇文章主要介紹了淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04