年初的时候就准备学习Qt了,因为工作原因被搁浅好久,现在开始学也不晚,以后每周更新2遍博文作为总结。
学过Windows开发的,会觉得Qt很亲切,学起来不是很费劲(PS: 环境搭建比较简单,本文不作说明),但是还得从Hello World开始一步步来。下面,笔者将用4种不同的方式来创建工程。
【QtWidgets Application】
所有文件系统均为创建,主要包括:
1. 项目文件:HelloWorld-1.pro;
2. 界面文件:hellodialog1.ui;
3. 界面类头文件:ui_hellodialog1.h;
4. 加载UI的类:HelloDialog1;
5. 包含main函数文件:main.cpp
创建好工程后,不需要修改代码,只需用”设计”模式打开hellodialog1.ui,拖入Label控件,修改文本为“Hello World, proj-1!”;
【Emptyqmake Project】
这是一个空项目,里面只包含项目文件:HelloWorld-2.pro,主要分2步实现:
1. 打开HelloWorld-2.pro,在最后一行添加:
greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
2. 新建main.cpp文件,手动添加代码:
#include <QApplication>
#include <QDialog>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog w;
QLabel label(&w);
w.resize(600, 400);
label.setText(QObject::tr("Hello World-2!"));
label.move(120, 120);
w.show();
return a.exec();
}
如果是手动写代码,会发现一个小坑,命令补全的快捷键Ctrl + space很有可能被其他软件占用,需要手动修改下快捷键:
工具 — 选项 — 环境 — 键盘 — 输入“”comp“”,修改为自己习惯的快捷键,推荐:Alt+Q;
这里再引入一种用“记事本编辑代码,用命令行编译代码”的方式,编译出exe文件,步骤如下:
1. 新建文件夹CmdTest,新建文件main.cpp,用记事本打开并拷贝好代码;
2. 打开“Qt 5.6 for Desktop(MinGW x.x.x)”,依次输入:c:、cd c:\CmdTest、qmake -project:
执行命令之后,会生产项目文件:CmdTest.pro
3. 打开CmdTest.pro文件,在末尾添加:
greaterThan(QT_MAJOR_VERSION,4): QT += widgets
4. 依次执行命令:qmake和ming32-make,会在Release中生成CmdTest.exe文件;
5. cd Release,执行exe文件:CmdTest.exe
c:
cd c:\CmdTest
qmake -project
qmake
ming32-make
cd Release
CmdTest.exe
【Empty qmake Project + Qt Designer From】
创建一个空项目,手动创建main.cpp、helloworld-3.ui,其中main.cpp核心代码是加载界面数据:
#include "ui_helloworld-3.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog w; // 核心代码
Ui::Dialog ui;
ui.setupUi(&w);
w.show();
return a.exec();
}
如果是用“记事本编辑代码,用命令行编译代码”的方式,编译工程。方法跟上一个工程编译类似,不过编译之前先从helloworld-3.ui导出一个类:
uic -o ui_helloworld-3.h helloworld-3.ui
大家一看会觉得比较眼熟?对,跟gcc -o xx.o xx.c类似,从“源文件” — “目标文件”。
【Emptyqmake Project + Qt Designer From + C++ Class】
也是首先创建一个空项目,添加文件之后如下:
这个树形结构跟用“Qt Widgets Application”创建项目后是一样的,此项目是模拟文件自动生成的过程,如下:
1. 创建界面文件模板,导出对应的类(ui_xxx.h文件);
2. 封住一个HelloWorld4类,通过setupUi()加载界面元素;
3. main.cpp中的main函数通过HelloWorld4中的show()方法显示界面;
至此,就出现了用“Qt Widgets Application”创建项目的初始雏形。
【项目打包发布】
Qt项目打包发布跟Windows程序时类型,略懂那么一点点,顺便跟大家分享一下:
1. 首先,百度搜索“Inno Setup”,默认下载是英文版,如果想打包后的安装程序为中文,去CSDN上下载一个中文包就OK,附链接:http://download.csdn.net/detail/woaildh/8938657
2. 将编译生的exe文件和需要依赖的dll库文件,拷贝到同一目录下;
3. 用Inno Setup向导生成一个脚本,编译脚本即可生成HelloWord.exe的安装文件;
最基本的程序主要依赖bin目录下6个dll文件:libgcc_s_dw2-1.dll、libstdc++-6.dll、libwinpthread-1.dll、Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll和platforms目录下的qwindows.dll文件。如果在程序中有使用其他模块,则包含对应模块的dll文件即可。也可以用windeployqt工具来查询:将xxx.exe文件拷贝到一个单独的目录下,打开“Qt 5.6 for Desktop(MinGW x.x.x)”, 执行命令:windeployqtc:\WinApp(路径)后,会自动将所有依赖的文件拷贝到WinApp目录(自己创建的)。
关于HelloWorld项目创建的所有内容都记录完了,如果有windows项目开发经验的,了解这么多差不多可以开始一些小项目,直接去熟悉qt界面开发了。但是为了能系统地学好Qt,后续会继续更新qt界面相关的笔记,我学习的书籍是《Qt Creaor 快速入门 霍亚飞编著》。