目录
1、新建项目
2、单工程项目创建
3、多工程项目创建
4、添加子工程(基于多工程目录结构)
5、 .pro文件
1、新建项目
切换到“编辑”界面,点击菜单栏中的“文件”-“新建文件或项目”
2、单工程项目创建
只有一个工程的项目,新建模板时就只用在“项目”-“Application”中选,最右边的一栏有该模板的解释说明。按照需求创建对应的应用程序,在此我们创建一个最常用的带UI的qt应用程序作为示范。
选择“Qt Widget Application”,点击“Choose”按钮,进行创建。设置项目名称与项目路径,如图所示。设置完成后,点击“下一步”。
因为我们使用了集成安装包,QtCreator的环境都已经自动安装好了,不用配置Kit,可以直接点击下一步。如果在当前页面“下一步”按钮被禁用了,则代表需要配置Kit。详细配置可以看该章节第四点。
配置类信息,设置类名与编译文件等的名称,点击下一步。注:建议类名与头文件、源文件、ui文件的名称与大小写保持一致。如图所示。
项目建立完成。该界面可以查看即将生成的所有文件与路径。因为是单工程项目,不需要配置“作为子项目添加到项目中”;“添加到版本控制系统”,如果有需要可以选择。注:.pro文件是qt的配置文件。
3、多工程项目创建
要创建一个多工程的项目,首先要建一个总的项目文件夹,作为根项目。
“文件”-“新建文件或项目”-“其他项目”-“子目录项目”-“Choose”。可以看到右边选中“子目录项目”后,右边的解释。
设置项目路径与总配置文件名称。
点击下一步可以看到即将生成的目录,该目录只生成一个.pro,作为总配置文件。
点击“完成&添加子项目”,对子项目进行添加,步骤与创建单项目目录步骤基本一致,唯一不同的是需要配置“汇总”-“作为子项目添加到项目中”,选择刚才创建的根项目,点击“完成”即可。
创建成功后,目录结构如图所示。可以看到总项目目录“MulPrj”下存在一个子项目目录“Projrct_1”,“Project_1”下存在该项目的配置文件与.h/.cpp等文件。
第一个创建的工程应该为Application项目,可作为启动项。
点击运行程序显示窗口。
4、添加子工程(基于多工程目录结构)
添加子工程有两个方法。
- 点击多工程项目目录结构的根项目,右键-“新子项目”,进行子项目的添加。
- 点击“文件”-“新建文件或项目”。
但是不论哪种方法,进入模板选择界面后,都需要选择“Library”-“C++库”。
进入子项目的创建。
勾选需要使用到的模块,一般勾选图中框起来的三个。
仍然让项目名称与.h/.cpp文件名称保持一致。
“作为子项目添加到项目中”仍然选择根项目,然后点击“完成”。
此时的目录结构如下:
文件夹下的目录结构如下:
5、 .pro文件
在多工程项目中存在多个.pro文件,大致可以分为三类:
- 根项目.pro:例如MulPrj.pro,用来控制所有子项目。
在这里我们只关注“SUBDIRS”,是根项目的固定写法,用来声明工程目录集的,需要添加或删除工程都可以在这里进行,删除对应的工程名称保存后,qt自动删除树目录结构下的对应工程。
注释之后可以看到目录结构下的工程都不见了。
也可以指定到目录文件夹下的.pro,在.pro与工程文件家名称不相同时使用。
- 启动项.pro:例如Project_1.pro,作为启动项,与子工程的配置有一些不同。
- Lib子工程.pro:例如Project_2.pro,作为创建时以library作为模板创建的工程。
#-------------------------------------------------
#
#ProjectcreatedbyQtCreator2023-03-03T14:27:35
#
#-------------------------------------------------QT+=coregui#“QT”是使用的QT库,从向导创建中可以看出,默认包含gui与core。如果不使用则生成的为QT-=coregui。这里是“+=”代表两个都使用。greaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=Project_1 #生成.so目标,名称不做修饰,不用添加.so,自动生成名称.so。如:TARGET = Project_change ,生成的.so为“Project_change.so”
DESTDIR= ../Bin#指定.so的生成路径
TEMPLATE=app#固定写法 主工程为app,子工程为lib#Thefollowingdefinemakesyourcompileremitwarningsifyouuse
#anyfeatureofQtwhichhasbeenmarkedasdeprecated(theexactwarnings
#dependonyourcompiler).Pleaseconsultthedocumentationofthe
#deprecatedAPIinordertoknowhowtoportyourcodeawayfromit.
DEFINES+=QT_DEPRECATED_WARNINGS #预定义头#YoucanalsomakeyourcodefailtocompileifyouusedeprecatedAPIs.
#Inordertodoso,uncommentthefollowingline.
#YoucanalsoselecttodisabledeprecatedAPIsonlyuptoacertainversionofQt.
#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x060000#disablesalltheAPIsdeprecatedbeforeQt6.0.0CONFIG+=c++11SOURCES+=\
main.cpp\
Project_1.cppHEADERS+=\
Project_1.hFORMS+=\
Project_1.ui#Defaultrulesfordeployment.
qnx:target.path=/tmp/$${TARGET}/bin
else:unix:!android:target.path=/opt/$${TARGET}/bin
!isEmpty(target.path):INSTALLS+=target
在pro中配置目标路径后,在“项目”-“概要”中取消勾选“shadow build”,让makefile默认生成在该项目.pro所在路径。