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左侧的“项目”按钮,进行编译选项的配置,其中可以直接修改构建目录地址。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

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