(项目创建->源码编译->程序运行->发布程序.
主体内容将按照下图中所示路线进行阐述:

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico

图1

3.1 Qt Creator创建、编译、运行项目

运行Qt Creator。
步骤一:新建项目
(1)文件->新建文件或项目,弹出一个对话框,我们选择Application项目中的Qt Widgets Application。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_命令行_02

图2

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_命令行_03

图3

(2)输入项目名称:HelloWorld,然后点击“浏览”按钮来选择源码存放路径,比如我这里是F:\File\2 Software\2-9 QT\Code,如果选中了“设为默认的项目路径”,那么今后创建的项目都将存放在这里。单击“下一步”。注意:项目所在路径中不能有中文,否则程序运行报错。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_命令行_04

图4

(3)选择构建套件:DeskTop Qt 5.10.1 MinGw 32bit,单击“下一步”。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_QT_05

图5

(4)自定义类名:设定类名为 HelloDialog,基类选择 QDialog ,单击”下一步“。这表明该类继承自 QDialog类,使用这个类可以生成一个对话框界面,Qt框架中所有的类都是以‘Q’开头的。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_06

图6

(5)设置项目管理:在这里可以看到这个项目的汇总信息,还可以使用版本控制系统,这里不会涉及,直接单击”完成“即可。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_QT_07

图7

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_08

图8

(6)右击项目文件列表中的任一文件,点击”在Explorer中打开“,就可以转到项目文件夹,让我们来看看项目目录中的各个文件说明:

表 1

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_desktop_09

步骤二:界面设计

(1)在Qt Creator编辑模式下双击项目文件列表中界面文件分类下的hellodialog.ui文件,便会进入设计模式。
(2)关于设计模式的界面介绍这里就不再赘述,可以翻看《Qt Creator快速入门》第二张查看。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_10

图9

(3)在控件区寻找一个”Label“标签部件,将它拖拽到主设计区的界面上,双击进入它进入部件进入编辑状态后输入”Hello World!!“字符串。还可以再拖拽一个”PushButton“按钮部件到标签下方,编辑按钮上文本为”OK",如下图所示:

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_命令行_11

图10

步骤三:编译并运行程序
(1)Ctrl+R组合键相当于左下角第一个绿色三角按钮(编译运行),按下后程序开始编译,右下角还有一个可视的进度条。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_QT_12

图11

(2)如果前面操作没有错误,单击“运行”按钮,会弹出提示保存对话框,单击“保存”就可以啦。那么这时我们制作的Hello World应用程序已经运行起来了,而Qt Creator下方弹出了“应用程序输出”框,在这里有一个红色的方块按钮可以终止程序运行,也可以直接X掉HelloWorld窗口。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_QT_13

图 12

好啦,QT Creator创建就完成啦。

3.2命令行创建、编译、运行项目

下面我们来看看用“Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)”怎么命令行构建项目吧。注意:Qt 5.10.1 for Desktop (MinGW 5.3.0 32 bit)就是我一直说的Qt终端,在开始菜单可以找到它!

步骤一:命令行编译ui文件并创建项目.pro文件
(1)新建文件夹作为项目文件夹,我建在了F盘根目录,文件夹名称hello。注意:路径中不能有中文。

(2)将Creator创建的项目中一些文件复制hello文件夹中。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_C_14

图13

(3)打开Qt 5.10.1 for Desktop (MinGW 5.3.0 32 bit),执行“f:&&cd f:\hello"切换到hello目录。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_15

图14

(4)编译ui文件。使用uic编译工具,从ui文件生成头文件。具体命令是:
uic -o ui_hellodialog.h hellodialog.ui

(5)这时,项目文件夹中就生成了以ui开头的头文件,可以用”notepad ui_hellodialog.h“命令查看其具体内容。

注:ui文件是用xml语言描述的界面文件,即我们在QtCreator设计模式中拖进去的那些部件组成的界面。此步骤的工作就是将ui文件转化成mingw编译器能看懂的.h头文件而已。

步骤二:构建项目.pro文件
(1)使用”qmake -project“命令来生成pro工程文件,这时可以看到hello目录中已经生成了hello.pro文件,此文件与项目文件夹hello同名。
【注】
qmake是Qt提供的一个编译工具,他可以生成与平台无关的.pro文件,然后利用该文件生产与平台相关的Makefile文件。Makefile文件中包含了要创建的目标文件或可执行文件、创建目标文件所依赖的文件和创建每个目标文件时需要运行的命令等信息。最后使用mingw32-make工具来完成自动编译,mingw32-make就是通过读入Makefile文件的内容来执行编译工作的。使用mingw32-make命令时会为每一个源文件生成一个对应的.o目标文件,最后将这些目标文件进行链接来生成最终的可执行文件。

(2)使用”notepad hello.pro"命令打开hello.pro文件,在最后面添加一行代码:

QT += widgets

按下Ctrl+S保存该文件。这行代码的意思是:需要添加widgets模块。因为源文件中使用到的类都包含在这个模块中,例如:main函数中用到的QApplication类。如果你的Qt版本是Qt4,包含这个模块可能会出错,所以为了保证与Qt4的兼容性,建议使用以下的方式:

greaterThan(QT_MAJOR_VERSION,4): QT += widgets

意思是:如果Qt的版本大于4那么就添加widgets模块。注意保存!

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_desktop_16

步骤三:命令行编译生成exe
(1)命令行输入:qmake,生成用于编译的Makefile文件。qmake之后生成共了三个文件、两个目录:
Dir:
debug
release // 后面编译后的exe文件在这里面
File:
Makefile // 包含了编译信息
Makefile.Debug
Makefile.Release

(2)输入“mingw32-make"命令来编译程序,编译完后会在release目录中出现helloworld.exe文件。(若想编译debug版本,只需要更改命令为:mingw32-make -f Makefile.Debug)。

(3)运行程序查看:.\debug\hello.exe,(笔者用的debug版本)程序完美运行!

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_desktop_17

图15

总结

  1. 理解ui文件的作用,掌握命令行将ui文件转化为.h文件的方法(uic)。
  2. Qt Creator创建项目的步骤。(Qt4和Qt5大同小异)
  3. 命令行所有操作一定是要在项目文件夹中,例如这里的hello项目。
  4. 掌握qmake工具的使用,在之后纯代码实现HelloWorld的时候要用到。
  5. 生成项目文件后,注意加 QT+=widgets。(多数编译不成功的原因都在这里!)
  6. 上面我们用到了一些常用的doc命令,例如cd、dir等等,若是对此有疑惑,还请积极查阅资料,多掌握一些doc命令可以增加工作效率也说不定哦!
  7. 以上内容我们总共提到了两种运行.exe的方式:QtCreator中Ctrl+R 和 命令行(必须是Qt 5.10.1 for Desktop)中.\debug\hello.exe的形式。
    除了以上两种方式外,还可以到项目工程文件夹中release中找到hello.exe双击运行,此时弹出错误提示框告诉你dll文件缺失,解决方法如下。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_QT_18

图16

【注】双击exe后无法打开,除了将缺失的dll文件全部复制到exe所在目录的方法外还有下面两种方式:
①在不知道需要哪些dll文件情况下可以使用windeployqt命令来让计算机帮你自动复制。启动Qt 5.10.1 for Desktop命令工具后执行以下命令即可:(将e:\app换成你的exe所在文件夹路径)
windeployqt e:\app
②不复制dll文件,将D:\QT5.10.1\5.10.1\mingw53_32\bin目录添加至PATH环境变量(注意发布程序时需要复制dll)。
方法:桌面-右击此电脑-选择属性-高级系统设置-环境变量-双击PATH进入编辑状态-添加bin路径(win7用户注意加分号)

3.3程序的发布

下面我们来看看用“Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)”怎么命令行构建项目吧。注意:Qt 5.10.1 for Desktop (MinGW 5.3.0 32 bit)
前文已经提到过编译的时候有两种方式:debug和release,区别就是debug生成的文件相对特别大。
前面Qt Creator创建的helloworld项目运行后,默认在helloworld的父目录中创建了build-HelloWorld-Desktop_Qt_5_10_1_MinGW_32bit-Debug文件夹,所有的输出文件都在这里,exe文件就在debug中,发现是1M左右;

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_19

图17

然后我们之前命令行编译出来的exe默认是release版,去看一看,啊哈!才24K!差距啊!当然你愿意发布大一些的我也不介意!

哦,还要告诉你两个版本的exe双击后提示缺少的dll文件也是不一样的,实验证明debug版本需要的dll文件都是非常大的有的就几百兆。

好,我们确定了release版本最利于发布,所以我们就用release版本开始以下步骤:
步骤一:设置应用程序图标(ICO)
在Qt Creator中打开helloworld项目,在左下角目标选择器中将构建目标设置为Release,Ctrl+R运行!
(1)先去制作一个ico后缀的图标文件吧,没有怎么办!不慌,找一张觉着漂亮的图片,点击此处链接:
点击进入
进去后制作图标重命名为”myico.ico“,图标文件保存到项目根目录中。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_20

图18

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_ico_21

图19

(2)修改项目文件。在Qt Creator中双击helloworld.pro文件,在最后添加下面一行代码:
···QT
RC_ICONS = myico.ico
···

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_C_22

图20

(3)以release方式运行程序,看看是不是有图标了呢?

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_C_23

图21

步骤二:创建程序文件夹
此时创建的程序直接双击运行会弹出错误框哦!还需要做以下处理才能发给别人用!

(1)新建一个文件夹,盛放程序发布要用的dll文件和exe可执行程序。我这里是 F:\app,并将exe文件复制进去,exe文件在与工程目录同级的目录中。

(2)在Qt安装目录中的bin文件夹中找到缺失的dll文件。例如:本程序需要复制bin目录(" D:\QT5.10.1\5.10.1\mingw53_32\bin")中的libgcc_s_dw2-1.dll、libstdc+±6.dll、libwinpthread-1.dll、Qt5Core.dll、Qt5Gui.dll和Qt5Widgets.dll这六个文件。

《QT - QT开发笔记》第3章 Qt项目建立、编译、运行和发布过程解析(QT5.10.1)_命令行_24

图22

(3)另外,还需要将D:\QT5.10.1\5.10.1\mingw53_32\plugins\platforms这个文件夹复制过去,里面只需保留qwindows.dll文件即可!
(3)这次双击exe文件就可以运行啦!(也可通过命令行完成以上操作)

【注】如果是Debug生成的exe,上文的六个文件就选择带d结尾的文件就行啦。
步骤三:打包文件夹,发布!
好了,现在就可分享给其他人!