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