0x01 Qt简介
Qt is the fastest and smartest way to produce industry-leading software that users love.
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
Qt支持的平台:
-
Windows – XP、Vista、Win7、Win8、Win2008、Win10
-
Uinux/X11 – Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多X11平台
-
Macintosh – Mac OS X
-
Embedded – 有帧缓冲支持的嵌入式Linux平台,Windows CE
Qt版本:
-
Qt4: 4.8.7 终结版本
-
Qt5 : 5.6 LTS 长期支持版本
-
Qt5: 5.9 LTS 长期支持版本
-
Qt5: 5.12 LTS 长期支持版本
注意:
-
学习和在职请按要求版本下。
-
个人开发:大版本推荐使用最新版本的前一个版本,大版本下的各小版本推荐使用最新小版本。
-
使用 Win XP 的读者请安装 Qt 5.5.1 之前的版本。
-
Qt 占用的存储空间很大,安装之前建议先准备好 8GB 以上的磁盘空间。对于目前 Qt 最新版开发环境,如果不安装源代码包,实际占用大约 5.5GB;如果选择安装源码包,大约占用 7.5GB。
0x02 Qt(5.9 LTS)安装
一、
其他版本下载地址:
下载页面中,点击 Details 链接可以进入详情页,在该页面可以看到文件的大小、校验和以及世界各地镜像下载链接。
二、Qt安装过程:
1.注册与登录
Qt 在安装过程中会提示用户进行注册和登录,不用理会,跳过(Skip)即可,实际开发时不需要登录。(如果不能skip,请断网)
2.安装路径与关联文件
安装路径不能有空格、中文字符、或其他任何特殊字符。如果不希望Qt关联特定后缀的文件(包括.cpp文件),可以取消下面的默认选项。
3.选择安装组件
Qt 的安装组件分为两部分:一部分是“Qt 5.9”分类下的,该分类包含的是真正的 Qt 开发库组件;另一部分是“Tools”分类下的,该分类包含的是集成开发环境和编译工具。
4.安装。
安装完成后,在 Windows“开始”菜单中会看到 Qt 5.9.0 程序组。
Qt Creator 4.11.0 (Community)
|
Qt 的集成开发环境,本教程就使用它来创建和管理 Qt 项目。
|
Assistant(Qt 助手)
|
用来查看帮助文档,已被集成在 Qt Creator 中。
|
Designer(Qt 设计师)
|
图形界面可视化编辑工具,已被集成在 Qt Creator 中,在 Qt Creator 中编辑或创建界面文件时,就可以自动打开。
|
Linguist(Qt 语言家)
|
多国语言翻译支持工具,可以用来编辑语言资源文件,在开发多语言界面的应用程序时会用到。
|
Qt 5.9.9 for Desktop (MinGW 5.3.0 32bit)
|
Qt 命令行工具,用来配置 Qt 开发环境(主要是设置 PATH 变量)
|
ps:
如果之前安装过VS,配置过mingw,查看gcc版本:
三、Qt整体目录结构
不同版本 Qt 的安装目录结构大同小异,以 Qt 5.9.0 为例来说明,如下图所示。
为了方便描述,下文我们使用~表示 Qt 的安装目录。
注意,~\5.9\ 和 ~\Tools\ 目录下都有 mingw53_32 目录(图中我用红色标出来了),但是两者是有区别的:
-
~\5.9\mingw53_32\ 目录包含的是 Qt 的类库文件,例如头文件、静态库、动态库等,这些类库文件使用 MinGW 工具集编译而成。
-
~\Tools\mingw53_32\ 目录包含的是 MinGW 工具集,例如编译器 g++、链接器 ld、make 工具、打包工具 ar 等。
QtCreator 是个例外,QtCreator 使用 MSVC2015 编译生成的,所以安装目录里有一个 vcredist 文件夹存储 VC 运行库安装文件。
最后的 MaintenanceTool.exe ,对于离线安装包,它只能用于删除软件包,如果 Qt 开发环境是用在线安装方式装的,这个工具还可以管理开发环境组件和升级组件。
Qt 类库的帮助文件位于 Docs 文件夹里,需要用 Qt Assistant 工具才能查看。
Examples 里是示例代码,可以用 QtCreator 集成开发环境打开各个示例。
四、Qt类库目录
0x03 Qt用到的开发工具
Qt是基于现有工具链打造而成的,它所使用的编译器、链接器、调试器等都不是自己的,Qt 官方只是开发了上层工具。
一、GNU工具集
GNU 工具集里面,开发时常见到的几个罗列如下(这些工具通常位于 Linux 或 Unix 系统里的 /usr/bin/ 目录):
工具
|
说明
|
gcc
|
GNU C 语言编译器。
|
g++
|
GNU C++ 语言编译器。
|
ld
|
GNU 链接器,将目标文件和库文件链接起来,创建可执行程序和动态链接库。
|
ar
|
生成静态库 .a ,可以编辑和管理静态链接库。
|
make
|
生成器,可以根据 makefile 文件自动编译链接生成可执行程序或库文件。
|
gdb
|
调试器,用于调试可执行程序。
|
ldd
|
查看可执行文件依赖的共享库(扩展名 .so,也叫动态链接库)。
|
二、MinGW
原本 GNU 工具只在 Linux/Unix 系统里才有,随着 Windows 系统的广泛使用, 为了在 Windows 系统里可以使用 GNU 工具,诞生了 MinGW(Minimalist GNU for Windows) 项目,利用 MinGW 就可以生成 Windows 里面的 exe 程序和 dll 链接库。
需要注意的是,MinGW 与 Linux/Unix 系统里 GNU 工具集的有些区别:
-
MinGW 里面工具带有扩展名 .exe, Linux/Unix 系统里工具通常都是没有扩展名的。
-
MinGW 里面的生成器文件名为 mingw32-make.exe,Linux/Unix 系统里就叫 make。
-
MinGW 在链接时是链接到 *.a 库引用文件,生成的可执行程序运行时依赖 *.dll,而 Linux/Unix 系统里链接时和运行时都是使用 *.so 。
另外 MinGW 里也没有 ldd 工具,因为 Windows 不使用 .so 共享库文件。如果要查看 Windows 里可执行文件的依赖库,需要使用微软自家的 Dependency Walker 工具。Windows 里面动态库扩展名为 .dll,MinGW 可以通过 dlltool 来生成用于创建和使用动态链接库需要的文件,如 .def 和 .lib。
MinGW 原本是用于生成 32 位程序的,随着 64 位系统流行起来, 从 MinGW 分离出来了 MinGW-w64 项目,该项目同时支持生成 64 位和 32 位程序。Qt 的 MinGW 版本库就是使用 MinGW-w64 项目里面的工具集生成的。
MSYS(Minimal SYStem)
MinGW 本身主要就是编译链接等工具和头文件、库文件,并不包含系统管理、文件操作之类的 Shell 环境, 这对希望用类 Unix 命令的开发者来说还是不够用的。 所以 MinGW 官方又推出了 MSYS(Minimal SYStem),相当于是一个部署在 Windows 系统里面的小型 Unix 系统环境, 移植了很多 Unix/Linux 命令行工具和配置文件等等,是对 MinGW 的扩展。
三、CMake
CMake(Cross platform Make)是一个开源的跨平台自动化构建工具, 可以跨平台地生成各式各样的 makefile 或者 project 文件, 支持利用各种编译工具生成可执行程序或链接库。
CMake 自己不编译程序, 它相当于用自己的构建脚本 CMakeLists.txt,叫各种编译工具集去生成可执行程序或链接库。
四、Qt工具集
常用的 Qt 开发工具列表如下:
工具
|
说明
|
qmake
|
核心的项目构建工具,可以生成跨平台的 .pro 项目文件,并能依据不同操作系统和编译工具生成相应的 Makefile,用于构建可执行程序或链接库。
|
uic
|
User Interface Compiler,用户界面编译器,Qt 使用 XML 语法格式的 .ui 文件定义用户界面,uic 根据 .ui 文件生成用于创建用户界面的 C++ 代码头文件,比如 ui_*****.h 。
|
moc
|
Meta-Object Compiler,元对象编译器,moc 处理 C++ 头文件的类定义里面的 Q_OBJECT 宏,它会生成源代码文件,比如 moc_*****.cpp ,其中包含相应类的元对象代码,元对象代码主要用于实现 Qt 信号/槽机制、运行时类型定义、动态属性系统。
|
rcc
|
Resource Compiler,资源文件编译器,负责在项目构建过程中编译 .qrc 资源文件,将资源嵌入到最终的 Qt 程序里。
|
qtcreator
|
集成开发环境,包含项目生成管理、代码编辑、图形界面可视化编辑、 编译生成、程序调试、上下文帮助、版本控制系统集成等众多功能, 还支持手机和嵌入式设备的程序生成部署。
|
assistant
|
Qt 助手,帮助文档浏览查询工具,Qt 库所有模块和开发工具的帮助文档、示例代码等都可以检索到,是 Qt 开发必备神器,也可用于自学 Qt。
|
designer
|
Qt 设计师,专门用于可视化编辑图形用户界面(所见即所得),生成 .ui 文件用于 Qt 项目。
|
linguist
|
Qt 语言家,代码里用 tr() 宏包裹的就是可翻译的字符串,开发人员可用 lupdate 命令生成项目的待翻译字符串文件 .ts,用 linguist 翻译多国语言 .ts ,翻译完成后用 lrelease 命令生成 .qm 文件,然后就可用于多国语言界面显示。
|
qmlscene
|
在 Qt 4.x 里是用 qmlviewer 进行 QML 程序的原型设计和测试,Qt 5 用 qmlscene 取代了旧的 qmlviewer。新的 qmlscene 另外还支持 Qt 5 中的新特性 scenegraph 。
|
0xFF 写在最后
参考: