Qt项目组织结构

当我们新建一个Qt Application项目时,Qt会自动为我们完成所需信息的配置工作和基础代码的编写工作,整个项目的组织结构如图1.1所示。


图1.1 项目的组织结构图

Qt自动为我们将相关代码文件分为头文件、源文件和界面文件,并分别进行管理。其中头文件的.h文件和源文件中对应的.cpp文件完成了“相关类”的代码编写工作。源文件中的main.cpp是整个项目的运行基础,是第一个运行的文件。界面文件中的.ui文件记录了整个项目的GUI编辑情况,对GUI的设计即是对该.ui文件的修改。在一个Qt项目中以上这些相关代码文件都容易理解,唯独.pro需要特别注意,因为.pro文件是整个项目底层的环境配置文件。下面我会对.pro文件进行更加详细的分析和描述。

PRO文件

在Qt中,PRO文件标识了整个项目的依赖关系,Qt自带的工具qmake可根据PRO文件中记录的依赖关系自动生成适合不同平台的Makefile文件。本文中我打算针对与采用的案例密切相关的几个要素给出详细的分析和示例。如果想了解更多的PRO文件的配置参数信息可参考Qt pro文件解析。
books.pro文件的详细内容如下:

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内核,对应qtcore模块,几乎所有Qt程序都要添加该项;gui表示图形界面,对应qtgui模块,如果程序中使用了界面资源,则需要添加该项。这一行很少改动,如果需要改动,则大多加上

Qt += core gui network

表示使用Qt网络功能模块。其他可选选项包括core、gui、widgets、network、xml、quick、multimedia、webkit等。

第2行是进行版本控制,如果版本大于4,则使用widgets实现界面处理。这主要用于兼容旧版本Qt程序。
第3行是EXE程序输出的文件名,一般不做修改。
第4行表示程序类型,是比较重要的一行。app表示程序是一个应用程序,qmake编译器将根据它输出EXE格式的文件,可选值还包括lib,qmake生成一个DLL或静态lib;subdirs子目录项目;vcapp生成适合VC项目的文件,如.vcproj等。
第5行表示程序使用的代码文件,包括所有的CPP文件。
第7行是程序使用的头文件。
第8行表示使用的对话框界面资源。

不建议手动修改PRO文件,如果有需要则一般只修改Qt行来增加Qt模块。增加新的CPP文件或头文件时可直接在相应项目里新建添加,添加的结果也会自动反映到第5、第7行,不需要手动修改。另外一项需要手动修改的值是LIBS,它表示Qt程序使用到的第三方库,在Windows中是DLL文件。

Qt在编译项目时采用了“影子编译”的方式。之所以称为影子编译,是因为Qt将代码目录和编译后生成的目录进行分离,用户复制代码时可只将重要的代码分布存储,而编译产生的各种体积较大的临时文件则被分离出来。相比复制VC项目目录时要复制很多的临时编译文件,Qt影子编译选项实现了轻量化操作。另外,用户可单击图1.1左侧的“项目”按钮,进行编译选项的配置,其中可以直接修改构建目录地址。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术...
    你的社交帐号昵阅读 8,927评论 0赞 10
  • 15.Qt 和 C++(Qt and C++) 本章的作者:jryannel ** 注意: **最新的构建时间:2...
    赵者也阅读 1,325评论 0赞 3
  • Qt是属于一个跨平台的GUI开发软件,支持的平台有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一叶之界阅读 8,509评论 0赞 17
  • 现在是个普遍焦虑的时代,人们都在绞尽脑汁地提升自己的能力,各种各样的秘诀与妙招层出不穷,好像学东西真的有什么捷径一...
    萧寒浅阅读 356评论 1赞 2
  • 沈熹离世后的第二年春天,周子成醒了。 无风不起浪,周周想,她还真该信了那些谣言,去查一查当年周子成的事故是不是真的...
    广电1701B梁赛赛阅读 607评论 0赞 0

友情链接更多精彩内容