一、導(dǎo)讀
在使用Qt進(jìn)行項(xiàng)目開發(fā)過程中,QtCreator是一款流行多年的必備開發(fā)利器,本文基于QtCreator這款I(lǐng)DE,描述其『新文件和新工程』創(chuàng)建向?qū)е懈鬟x項(xiàng)的含義,還簡要分析使用QtCreator內(nèi)部自帶模板創(chuàng)建出基礎(chǔ)工程。
本文內(nèi)容基于QtCreator版本:8.0.1:
對(duì)于一個(gè)全新的Qt項(xiàng)目,在項(xiàng)目開發(fā)實(shí)施之前需要考慮項(xiàng)目的開發(fā)方式,其中就包含了編程語言的選擇,Qt主要提供了三種方式去開發(fā)自己的項(xiàng)目:
(1)C++開發(fā)方式
(2)QtQuick qml開發(fā)方式
(3)python開發(fā)方式
上述三種方式從計(jì)算機(jī)編程語言去考量。忽略Qt-android平臺(tái)下的開發(fā)。
二、淺談開發(fā)方式
(2-1)C++開發(fā)方式
如果項(xiàng)目選擇了C++作為開發(fā)中所使用的編程語言,在使用QtCreator創(chuàng)建項(xiàng)目時(shí),則選擇『Application(Qt)->Qt Widgets Application/Qt Console Application』:
Qt Widgets Application :如果選擇了該選項(xiàng),則創(chuàng)建一個(gè)包含主窗口且基于Widget的Qt應(yīng)用程序。也就是說,如果是一個(gè)需要包含窗體且使用C++作為開發(fā)方式的項(xiàng)目,就選擇該選項(xiàng)。
Qt Console Application :如果選擇了該選擇,則創(chuàng)建一個(gè)控制臺(tái)運(yùn)行的Qt應(yīng)用程序,也就是不帶任何界面的Qt項(xiàng)目。
Widgets Application和Console Application從源碼上分別以QApplication和QCoreApplication類表示。
(2-2)QtQuick qml開發(fā)方式
QtQuick是Qt提供的一種炫酷界面快速開發(fā)的方式,qml是主要的開發(fā)語言,如果項(xiàng)目想以QtQuick進(jìn)行開發(fā),則選擇『Application(Qt)->Qt Quick Application』:
以這個(gè)選項(xiàng)按照工程向?qū)?chuàng)建的項(xiàng)目,會(huì)自動(dòng)生成一個(gè)main.cpp文件和一個(gè)main.qml文件。
在main.cpp文件中創(chuàng)建了QGuiApplication對(duì)象和QQmlApplicationEngine引擎,并指定了引擎需要解析的qml文件,這里是main.qml。在main.qml文件中,則描述了一個(gè)極簡單的窗體。
(2-3)python開發(fā)方式
如果項(xiàng)目選擇了python作為開發(fā)中所使用得編程語言,在使用QtCreator創(chuàng)建項(xiàng)目時(shí),則選擇『Application(Qt for Python)』:
Empty Application:該選項(xiàng)創(chuàng)建一個(gè)空的項(xiàng)目工程,使用python方式創(chuàng)建了QApplication。QtCerator內(nèi)部模板生成的代碼中不包含窗體描述部分。
Empty Windows :該選項(xiàng)會(huì)創(chuàng)建一個(gè)空的窗體應(yīng)用程序,包含了一個(gè)窗體。
Window UI - Dynamic load :該選項(xiàng)創(chuàng)建一個(gè)帶xxx.ui文件的工程,可以使用Qt Designer設(shè)計(jì)。(這種方式是以動(dòng)態(tài)方式加載xxx.ui文件,源碼上使用QUiLoader()實(shí)現(xiàn))
Window UI :該選項(xiàng)與Window UI - Dynamic load功能類似,都會(huì)創(chuàng)建一個(gè)xxx.ui文件。與widget + C++開發(fā)中的ui文件一樣,會(huì)將xxx.ui文件轉(zhuǎn)換生成對(duì)應(yīng)的界面類,只是這里是基于python語言的。
Qt Quick Application - Empty :該選項(xiàng)用于創(chuàng)建使用QtQuick qml + python開發(fā)的項(xiàng)目工程,QtCreator內(nèi)部項(xiàng)目模塊會(huì)創(chuàng)建一個(gè)工程描述文件xxx.pyproject、應(yīng)用解析文件main.py和`應(yīng)用描述文件main.qml。
三、新工程創(chuàng)建向?qū)碌腖ibrary
在上述第二小節(jié)描述了使用QtCreator創(chuàng)建基于Qt新項(xiàng)目的三種開發(fā)方式,本小節(jié)描述『新工程創(chuàng)建向?qū)А幌碌腖ibrary選項(xiàng)。
如果想創(chuàng)建一個(gè)生成庫的工程,則選擇『Library』:
C++ Library :該選項(xiàng)用于創(chuàng)建一個(gè)生成庫文件的工程,在編譯構(gòu)建成功后,會(huì)生成一個(gè)庫文件(不同平臺(tái)下生成的庫文件不一樣),這個(gè)庫文件可以使用QPluginLoader加載或者Qt 應(yīng)用程序在運(yùn)行時(shí)加載使用,除此之外,生成的動(dòng)態(tài)/靜態(tài)庫文件也用于其他工程項(xiàng)目在鏈接階段使用。
Qt Quick 2 Extension Plugin :該選項(xiàng)會(huì)創(chuàng)建一個(gè)C++插件,使用QQmlEngine類可以將Qt Quick擴(kuò)展動(dòng)態(tài)加載到應(yīng)用程序中。也就是說,該選項(xiàng)會(huì)創(chuàng)建一個(gè)C++插件,這個(gè)插件是使用C++語言編寫的,我們可以在QtQuick qml項(xiàng)目工程中加載這個(gè)插件來使用。
Qt Creator Plugin :該選項(xiàng)用于創(chuàng)建一個(gè)能生成QtCreator插件的工程,在實(shí)際Qt開發(fā)中在選項(xiàng)使用較少。
四、其他項(xiàng)目
在QtCreator的『新工程創(chuàng)建向?qū)А幌拢幸粋€(gè)其他項(xiàng)目選項(xiàng):
我們可以使用該選項(xiàng)下的條目去創(chuàng)建實(shí)際項(xiàng)目開發(fā)過程中所需要的輔助項(xiàng)。
設(shè)計(jì)師自定義控制:該選項(xiàng)用于創(chuàng)建一個(gè)Qt Designer的自定義控件或者一個(gè)自定義控件集合。對(duì)于實(shí)際工程項(xiàng)目開發(fā)中所使用的UI控制,如果想把它做成自定義控件直接在Qt Designer中拖拽使用,則使用該選項(xiàng)。
Qt Quick UI Prototype :該選項(xiàng)用于創(chuàng)建帶有QML入口點(diǎn)的Qt Quick 2 UI項(xiàng)目。我們則可以在帶有QML運(yùn)行時(shí)的情況下加載使用。也就是,該選項(xiàng)下僅僅會(huì)創(chuàng)建一個(gè)qml文件。(該選項(xiàng)創(chuàng)建的不是一個(gè)完整的Qt Quick 項(xiàng)目,如果想要一個(gè)完整的Qt Quick項(xiàng)目工程,則使用『Application(Qt)->Qt Quick Application』)
Auto Test Project :該選項(xiàng)用于創(chuàng)建一個(gè)新的單元測試項(xiàng)目,允許我們驗(yàn)證代碼是否適合使用。該選項(xiàng)本質(zhì)上則會(huì)創(chuàng)建一個(gè)基于QtTest的測試工程代碼模板。
子目錄項(xiàng)目 :該選項(xiàng)用于創(chuàng)建一個(gè)包含多個(gè)子項(xiàng)目的項(xiàng)目工程。如果一個(gè)項(xiàng)目中包含有多個(gè)子項(xiàng)目需要生成,例如,一個(gè)工程里面既要生成exe,又要生成dll庫文件,則選擇該選項(xiàng),實(shí)現(xiàn)多個(gè)子項(xiàng)目的嵌套。(這個(gè)選項(xiàng)在實(shí)際開發(fā)中較為常用)
Empty qmake Project :該選項(xiàng)用于創(chuàng)建一個(gè)基于qmake的空項(xiàng)目,這允許創(chuàng)建一個(gè)沒有任何默認(rèn)類的應(yīng)用程序。也就是該選項(xiàng)是最原始的狀態(tài),只會(huì)創(chuàng)建一個(gè)沒有任何內(nèi)容的xxx.pro工程管理文件。
Code Snippet :該選項(xiàng)用于創(chuàng)建一個(gè)基于qmake的測試項(xiàng)目,可以為其預(yù)先輸入代碼片段。也就是我們可以在工程創(chuàng)建向?qū)е袑懭胛覀冏约旱拇a片段。
五、其他工程項(xiàng)目
還可以使用QtCreator的『新工程創(chuàng)建向?qū)А粍?chuàng)建不是Qt項(xiàng)目的工程:
Plain C Application :該選項(xiàng)用于創(chuàng)建一個(gè)C語言簡單的工程:包含一個(gè)main.c文件,文件中生成的代碼僅包含了main()函數(shù)入口。
Plain C++ Application : 該選項(xiàng)用于創(chuàng)建一個(gè)C++語言簡單的工程:包含一個(gè)main.cpp文件,文件中生成的代碼僅包含了main()函數(shù)入口。
也就是說,使用QtCreator也能創(chuàng)建C/C++項(xiàng)目文件,只是需要注意編譯構(gòu)建環(huán)境的配置和選擇。
六、Import Project選項(xiàng)
我們可以使用QtCreator導(dǎo)入由版本控制軟件管控的項(xiàng)目工程或者存在本地磁盤上的工程:
Bazaar Clone(or Branch):Bazaar是一個(gè)分布式的版本控制系統(tǒng)。該選項(xiàng)用于想要使用Bazaar去Clone項(xiàng)目的場景。
Git Clone:Git同樣也是一個(gè)開源的分布式版本控制系統(tǒng)。該選項(xiàng)用于想要使用git去Clone項(xiàng)目的場景。(在實(shí)際項(xiàng)目開發(fā)實(shí)施過程中,這種方式較為常用)
Mercurial Clone:Mercurial是一種使用Python語言實(shí)現(xiàn)的輕量級(jí)分布式版本控制系統(tǒng)。該選項(xiàng)用于想要使用Mercurial去Clone項(xiàng)目的場景。
Subversion Checkout:Subversion是一種集中式的版本控制系統(tǒng)(簡稱為SVN)。該選項(xiàng)用于想要使用SVN去Clone項(xiàng)目的場景。(在實(shí)際項(xiàng)目開發(fā)實(shí)施過程中,這種方式也較為常用)
CVS Checkout:CVS是一個(gè)C/S系統(tǒng),是一個(gè)常用的代碼版本控制軟件。該選項(xiàng)用于想要使用CVS去Clone項(xiàng)目的場景。
Import as qmake or CMake Project :導(dǎo)入不使用qmake、CMake、Qbs、Meson或Autotools的現(xiàn)有項(xiàng)目。該選項(xiàng)將創(chuàng)建一個(gè)項(xiàng)目文件,允許我們使用Qt Creator作為代碼編輯器,并作為調(diào)試和分析工具的啟動(dòng)器。
導(dǎo)入現(xiàn)有項(xiàng)目:該選項(xiàng)將創(chuàng)建一個(gè)項(xiàng)目文件,允許我們使用Qt Creator作為代碼編輯器,并導(dǎo)入不使用qmake、CMake、Qbs、Meson或Autotools的現(xiàn)有本地項(xiàng)目。也就是說可以使用Qt Creator作為代碼編輯器去編輯現(xiàn)有的項(xiàng)目中文件。
七、總結(jié)
本文主要描述QtCreaotr的『新工程創(chuàng)建向?qū)А幌碌囊恍┻x項(xiàng)。在實(shí)際Qt項(xiàng)目開發(fā)過程中,Application(Qt)選項(xiàng)是最常用的。
實(shí)際Qt項(xiàng)目開發(fā)中,最重要的是規(guī)劃項(xiàng)目文件和程序設(shè)計(jì)、編寫、調(diào)試。QtCreator的『新工程創(chuàng)建向?qū)А粸殚_發(fā)工作提供了許多的快捷方式,且自動(dòng)生成了一些最基本的代碼,以加快開發(fā)效率。
-
IDE
+關(guān)注
關(guān)注
0文章
338瀏覽量
46797 -
編程語言
+關(guān)注
關(guān)注
10文章
1949瀏覽量
34850 -
C++
+關(guān)注
關(guān)注
22文章
2113瀏覽量
73742 -
Qt
+關(guān)注
關(guān)注
1文章
308瀏覽量
37989 -
QTcreator
+關(guān)注
關(guān)注
0文章
11瀏覽量
6847
原文標(biāo)題:哇哦,Qt新工程創(chuàng)建向?qū)О挡匦C(jī)...
文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論