Qt5 与 Qt4 其中的一个区别是底层架构进行了改变,Qt5 引入了更加详细的模块化的概念,将众多功能细分到几个模块之中,Qt4 则是一种粗略的划分。本文主要对 Qt5 和 Qt4的模块进行一个简单的介绍。
(注:本文引用Qt4.8和Qt5.6两个版本)
一、Qt4.8 (http://doc.qt.io/qt-4.8/modules.html)
1.基础模块:
1)QtCore,提供核心的非 GUI 功能,所有模块都需要这个模块。所有这些类都可以通过<QtCore>头文件引入。。
2)QtGui,提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图像、字体、拖放等。这些类一般由 Qt 用户界面类内部使用,当然也可以用于访问底层的 OpenGL ES 图像 API。Qt Gui 模块提供的是所有图形用户界面程序都需要的通用功能。
3)QtMultimedia,提供视频、音频、收音机以及摄像头等功能。这些类可以通过<QtMultimedia> 引入,而且需要在 pro 文件中添加 QT += multimedia。
4)QtNetwork,提供跨平台的网络功能。这些类可以通过 <QtNetwork> 引入,而且需要在 pro 文件中添加 QT += network。
5)QtOpenGL,提供对 OpenGL 的支持。
6)QtOpenVG,提供对 OpenVG 的支持。
7)QtScript,提供对 Qt Scripts 的支持。
8)QtScriptTools,为 Qt Script 提供的额外组件。
9)QtSql,提供对 SQL 数据库的支持。
10)QtSvg,提供对 SVG 文件的支持。
11)QtWebKit,提供显示和编辑 Web 内容。
12)QtXml,XML 处理。
13)QtXmlPatterns,提供对 XQuery、XPath 等的支持。
14)QtDeclarative,用于编写动画形式的图形用户界面的引擎。
15)Phonon,多媒体框架。
16)Qt3Support,Qt 3 兼容类库。
2.工具模块:
1)QtDesigner,用于扩展 Qt Designer。
2)QtUiTools,用于在自己的引用程序中处理 Qt Designer 生成的 form 文件。
3)QtHelp,联机帮助。
4)QtTest,单元测试。
3.专门供 Windows 平台的模块:
1)QAxContainer,用于访问 ActiveX 控件。
2)QAxServer,用于编写 ActiveX 服务器。
4.专门供 Unix 平台的模块:
1)QtDBus,使用 D-Bus 提供进程间交互。
二、Qt5.6 (http://doc.qt.io/qt-5/qtmodules.html)
Qt5模块分为 Essentials Modules 和 Add-on Modules 两部分。前者是基础模块,在所有平台上都可用;后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平台之上可以酌情引入。
1.基础模块:
1)QtCore,提供核心的非 GUI 功能,所有模块都需要这个模块。这个模块的类包括了动画框架、定时器、各个容器类、时间日期类、事件、IO、JSON、插件机制、智能指针、图形(矩形、路径等)、线程、XML 等。所有这些类都可以通过 <QtCore> 头文件引入。
2)QtGui,提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图像、字体、拖放等。这些类一般由 Qt 用户界面类内部使用,当然也可以用于访问底层的 OpenGL ES 图像 API。Qt Gui 模块提供的是所有图形用户界面程序都需要的通用功能。
3)Qt Multimedia、Qt Multimedia Widgets,提供视频、音频、收音机以及摄像头等功能。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += multimedia。
4) Qt Network,提供跨平台的网络功能。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += network。
5) Qt QML,提供供 QML(一种脚本语言,也提供 JavaScript 的交互机制) 使用的 C++ API。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += qml。
6) Qt Quick、Qt Quick Layouts、Qt Quick Dialogs、Qt Quick Controls,允许在 Qt/C++ 程序中嵌入 Qt Quick(一种基于 Qt 的高度动画的用户界面,适合于移动平台开发)。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += quick。
7) Qt SQL,允许使用 SQL 访问数据库。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += sql。
8) Qt Test,提供 Qt 程序的单元测试功能。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += testlib。
2.扩展模块:
1)Active Qt,专门用于windows的使用ActiveX和COM应用;
2)Enginio,提供一个数据库后台,通过它规定的API调用,就可以将应用程序的各种数据存储在后台上,实现即存即得。
3)Qt Android Extras,用于Android开发;
4)Qt Bluetooth,提供硬件蓝牙的访问;
5)Qt Canvas 3D,使用js开发的Qt Quick调用的OpenGL3D绘图模块;
6)Qt Concurrent,多线程的并行计算框架;
7)Qt D-Bus,D-BUS通讯协议接口;
8)Qt Graphical Effects,Qt Quick使用的处理图形效果的模块;
9)Qt Image Formats,支持多种图像格式, TIFF, MNG, TGA, WBMP等;
10)Qt Location,QML中展示地图、导航、位置的模块;
11)Qt Mac Extras,专为MAC平台提供的接口,可以使用OS和IOS操作系统的方法;
12)Qt NFC,用于方位近场通信设备的接口模块;
13)Qt OpenGL,OpenGL模块,已经包含进QtCore;
14)Qt Platform Headers,提供特定平台接口,绑定平台运行时状态的插件的模块;
15)Qt Positioning,提供方位位置,卫星和区域监控的模块;
16)Qt Print Support,打印模块;
17)Qt Quick Extras,提供Qt Quick模块的特殊控制方式;
18)Qt Quick Widgets,提供C++和Qt Quick模块的交互;
19)Qt Script,使用JS引擎的模块;
20)Qt Script Tools,使用Qt Script模块的额外组建模块;
21)Qt Sensors,访问硬件传感器和进行手势识别的模块;
22)Qt Serial Port,虚拟串口通信模块;
23)Qt SVG,SVG文件进行处理的模块;
24)Qt WebChannel,用于与html和js进行无缝交互;
25)Qt WebEngine,QML用于web开发的模块;
26)Qt WebEngine Widgets,C++用于web开发的模块;
27)Qt WebEngine Core,为QML和C++进行web开发提供公共的接口;
28)Qt WebSockets,提供RFC6455通信协议支持;
29)Qt WebView,不需要完整的web浏览器支持,即可展示QML开发的web应用;
30)Qt Windows Extras,提供windows API支持;
31)Qt X11 Extras,提供X11 API支持;
32)Qt XML,利用SAX和DOM进行XML解析的接口;
33)Qt XML Patterns,支持XPath, XQuery, XSLT and XML 的模式验证。
3.GPL和GPLv3等商用协议模块,开源版本不支持(也就是增值模块)
1)Qt for Device Creation,快速、容易、完整的嵌入式开发工具;
2)Qt Charts,利用UI组件展示数据模型,图表模块;
3)Qt Quick Compiler,QML编译器,将QML文件编译成二进制文件,以提高加载速度和代码的安全性;
4)Qt Data Visualization,进行3D数据可视化的开发模块;
5)Qt Purchasing,开发移动平台的商店,购物模块;
6)Qt Virtual Keyboard,虚拟键盘模块;
7)Qt Quick 2D Renderer,支持没有OpenGL模块的QML2D展示模块。
4.技术预览模块
1)Qt 3D,2D、3D实时仿真渲染模块;
2)Qt Serial Bus,串行总线接口,目前只支持Modbus和CAN;
3)Qt Labs Controls,为移动设备和嵌入式方面提供一个轻量级的QML开发接口,为QML开发提供简易样式架构,协同Qt Quick和Qt Quick Layouts模块进行工作。
5.工具模块:
1)Qt Designer,UI设计器;
2)Qt Help,帮助文档;
3)Qt UI Tools,用于处理UI设计器设计的表单。