Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化。本文主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功能的时候知道到哪个模块去寻找。
Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分。前者是基础模块,在所有平台上都可用;后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平台之上可以酌情引入。
QtEssentials包含了所有基本的Qt模块,这些模块可以在全部支持的开发平台与特定的测试目标平台上良好的运行,并且保持了不错的兼容性。这些必需的模块广泛使用在大部分的Qt应用程序中。即使一个模块可以在所有支持的开发平台上使用,只要其被使用于实现特定的问题,它就被归为add-on模块组中。
Qt5 基础模块分为以下几个:
Qt Core 包含核心非图形化的类,广泛被其它模块调用
Qt GUI 包含与GUI组件有关的基本类,包含OpenGL
Qt Multimedia 包含与音频,视频,无线广播和相机功能相关的类
Qt Multimedia Widgets 包含用于支持多媒体功能的控件相关的类
Qt Network 包含简化优化网络编程的类
Qt QML 包含QML,JavaScript相关的类
Qt Quick 使用通用用户接口构建动态应用程序的描述性框架
Qt Quick Controls 为构建传统的桌面风格用户界面,基于UIcontrols对QtQuick的重用
Qt Quick Layouts Layouts用来在用户界面层次安排QtQuick项,Layouts本身也算作QtQuick项
Qt SQL 包含使用SQL进行数据库使用集成的类
Qt Test 包含用于测试Qt应用程序与库的类
Qt WebKit 包含用于支持基于WebKit2的使用与新的QMLAPI的类。参考QtWebKit Widgits条目
Qt WebKit Widgets 包含用于支持Qt4的WebKit1及与之相关的基于控件显示的类
Qt Widgets 包含用c++的控件来拓展QtGUI的类
QtAdd-Ons包含了用于特定目的的额外的模块,支持大部分的开发平台与一些目标平台。模块各自保持自己的兼容性。
Active Qt 包含使用ActiveX与COM的应用的类
Qt Concurrent 包含那些跳出线程原语层次简化多线程编程的类
Qt D-Bus 包含基于D-Bus协议,用于进程间通信的类
Qt Graphical Effects 包含构建QtQuick2图形效果的类
Qt Image Formats 为支持多图片格式的一些额外的类,如TIFF,MNG,TGA,WBMP
Qt OpenGL 包含用于支持OpenGL的类 注:推荐在新代码中使用QtGUI模块中与OpenGL相关的类
Qt Print Support 包含简化打印功能的类
Qt Declarative 提供与Qt4的兼容性说明
Qt Script 包含使Qt应用程序脚本化的类,为了保持与Qt4的兼容性而存在,推荐在新代码中使用QtQml中的QJS*类
Qt Script Tools 提供使用QtScript程序的附加组件
Qt Sensors 包含可控制硬件传感器与识别移动手势的类
Qt Serial Port 包含可获取硬件虚拟序列接口的类
Qt SVG 包含用于显示SVG文件内容的类
Qt X11 Extras 提供特定的API用于支持X11
Qt XML SAX与DOM的c++实现 注:推荐新代码中使用QXmlStreamReader和QXmlStreamWriter类
Qt XML Patterns 用于为XPath,XQuery,XSLT,XML模式验证提供支持
QtTools Tools提供可运行在所有支持开发平台上的官方工具。
以下是QtTools的模块列表:
Qt Designer
包含拓展QtDesigner的类
Qt Help
包含提供在线支持的类
Qt UI Tools
包含提供UI工具的类
Qt 4 也分成若干模块,但是这些模块与 Qt 5 有些许多不同。下面是 Qt 4 的模块:
QtCore,Qt 提供的非 GUI 核心类库,这一部分与 Qt 5 大致相同,只不过 Qt 4 的 core 类库中并不包含 JSON、XML 处理等。
QtGui,图形用户界面组件,这个模块相当于 Qt 5 的 QtGui 与 QtWidgets 两个模块的总和。
QtMultimedia,多媒体支持,类似 Qt 5 的相关部分。
QtNetwork,网络支持,类似 Qt 5。
QtOpenGL,提供对 OpenGL 的支持。在 Qt 5 中,这部分被移植到 QtGui 模块。
QtOpenVG,提供对 OpenVG 的支持。
QtScript,提供对 Qt Scripts 的支持。Qt Script 是一种类似于 JavaScript 的脚本语言。在 Qt 5 中,推荐使用 QtQml 的 JavaScript 部分。
QtScriptTools,为 Qt Script 提供的额外组件。
QtSql,提供对 SQL 数据库的支持。
QtSvg,提供对 SVG 文件的支持。
QtWebKit,提供显示和编辑 Web 内容。
QtXml,XML 处理,这部分在 Qt 5 中被添加到了 QtCore。
QtXmlPatterns,提供对 XQuery、XPath 等的支持。
QtDeclarative,用于编写动画形式的图形用户界面的引擎。
Phonon,多媒体框架。
Qt3Support,Qt 3 兼容类库。
下面是 Qt 4 的一些工具模块:
QtDesigner,用于扩展 Qt Designer。
QtUiTools,用于在自己的引用程序中处理 Qt Designer 生成的 form 文件。
QtHelp,联机帮助。
QtTest,单元测试。
下面是专门供 Windows 平台的模块:
QAxContainer,用于访问 ActiveX 控件。
QAxServer,用于编写 ActiveX 服务器。
下面是专门供 Unix 平台的模块:
QtDBus,使用 D-Bus 提供进程间交互