主要是介绍QT小模块,以及小模块主要负责具体哪些功能。
Qt 5模块分为 Essentials Modules 和 Add-on Modules 两部分。前者是基础模块,在所有平台上都可用;后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平台之上可以酌情引入。
Qt 基础模块分为以下几个:
Qt Core,提供核心的非 GUI 功能,所有模块都需要这个模块。这个模块的类包括了动画框架、定时器、各个容器类、时间日期类、事件、IO、JSON、插件机制、智能指针、图形(矩形、路径等)、线程、XML 等。所有这些类都可以通过 头文件引入。
Qt Gui,提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图像、字体、拖放等。这些类一般由 Qt 用户界面类内部使用,当然也可以用于访问底层的 OpenGL ES 图像 API。Qt Gui 模块提供的是所有图形用户界面程序都需要的通用功能。
Qt Multimedia,提供视频、音频、收音机以及摄像头等功能。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += multimedia。
Qt Network,提供跨平台的网络功能。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += network。
Qt Qml,提供供 QML(一种脚本语言,也提供 JavaScript 的交互机制) 使用的 C++ API。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += qml。
Qt Quick,允许在 Qt/C++ 程序中嵌入 Qt Quick(一种基于 Qt 的高度动画的用户界面,适合于移动平台开发)。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += quick。
Qt SQL,允许使用 SQL 访问数据库。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += sql。
Qt Test,提供 Qt 程序的单元测试功能。这些类可以通过 引入,而且需要在 pro 文件中添加 QT += testlib。
Qt Webkit,基于 WebKit2 的实现以及一套全新的 QML API(顺便说一下,Qt 4.8 附带的是 QtWebkit 2.2)。
Qt 扩展模块则有更多的选择:
Qt 3D,提供声明式语法,在 Qt 程序中可以简单地嵌入 3D 图像。Qt 3D 为 Qt Quick 添加了 3D 内容渲染。Qt 3D 提供了 QML 和 C++ 两套 API,用于开发 3D 程序。
Qt Bluetooth,提供用于访问蓝牙无线设备的 C++ 和 QML API。
Qt Contacts,用于访问地址簿或者联系人数据库的 C++ 和 QML API。
Qt Concurrent,封装了底层线程技术的类库,方便开发多线程程序。
Qt D-Bus,这是一个仅供 Unix 平台使用的类库,用于利用 D-Bus 协议进行进程间交互。
Qt Graphical Effects,提供一系列用于实现图像特效的类,比如模糊、锐化等。
**Qt Image Formats,**支持图片格式的一系列插件,包括 TIFF、MNG、TGA 和 WBMP。
Qt JS Backend,该模块没有公开的 API,是 V8 JavaScript 引擎的一个移植。这个模块仅供 QtQml 模块内部使用。
Qt Location,提供定位机制、地图和导航技术、位置搜索等功能的 QML 和 C++ API。
Qt OpenGL,方便在 Qt 应用程序中使用 OpenGL。该模块仅仅为了程序从 Qt 4 移植到 Qt 5 的方便才保留下来,如果你需要在新的 Qt 5 程序中使用 OpenGL 相关技术,需要使用的是 QtGui 模块中的 QOpenGL。
Qt Organizer,使用 QML 和 C++ API 访问组织事件(organizer event)。organizer API 是 Personal Information Management API 的一部分,用于访问 Calendar 信息。通过 Organizer API 可以实现:从日历数据库访问日历时间、导入 iCalendar 事件或者将自己的事件导出到 iCalendar。
Qt Print Support,提供对打印功能的支持。
Qt Publish and Subscribe,为应用程序提供对项目值的读取、导航、订阅等的功能。
Qt Quick 1,从 Qt 4 移植过来的 QtDeclarative 模块,用于提供与 Qt 4 的兼容。如果你需要开发新的程序,需要使用 QtQuick 模块。
Qt Script,提供脚本化机制。这也是为提供与 Qt 4 的兼容性,如果要使用脚本化支持,请使用 QtQml 模块的 QJS* 类。
Qt Script Tools,为使用了 Qt Script 模块的应用程序提供的额外的组件。
Qt Sensors,提供访问各类传感器的 QML 和 C++ 接口。
Qt Service Framework,提供客户端发现其他设备的服务。Qt Service Framework 为在不同平台上发现、实现和访问服务定义了一套统一的机制。
Qt SVG,提供渲染和创建 SVG 文件的功能。
Qt System Info,提供一套 API,用于发现系统相关的信息,比如电池使用量、锁屏、硬件特性等。
Qt Tools,提供了 Qt 开发的方便工具,包括 Qt CLucene、Qt Designer、Qt Help 以及 Qt UI Tools 。
Qt Versit,提供了对 Versit API 的支持。Versit API 是 Personal Information Management API 的一部分,用于 QContacts 和 vCard 以及 QOrganizerItems 和 iCalendar 之间的相互转换。
Qt Wayland,仅用于 Linux 平台,用于替代 QWS,包括 Qt Compositor API(server)和 Wayland 平台插件(clients)。
Qt WebKit,从 Qt 4 移植来的基于 WebKit1 和 QWidget 的 API。
Qt Widgets,使用 C++ 扩展的 Qt Gui 模块,提供了一些界面组件,比如按钮、单选框等。
Qt XML,SAX 和 DOM 的 C++ 实现。该模块已经废除,请使用 QXmlStreamReader/Writer。
Qt XML Patterns,提供对 XPath、XQuery、XSLT 和 XML Schema 验证的支持。
Qt NFC 目前,Android和使用Neard v0.14或更高版本的Linux都支持该API。
NFC是一种极近距离(小于20厘米)的无线技术,最大传输速率为424 kbit/s。当两台设备接触在一起时,NFC是传输小数据包的理想选择。
NFC API提供了与NFC论坛标签和NFC论坛设备交互的API,包括目标检测和丢失、注册NDEF消息处理程序、在NFC论坛标签上读写NDEF消息和发送标签特定命令。
其他模块使用的核心非图形类。
#include
QT += gui
Qt将这些功能添加到C ++中:
一种非常强大的无缝对象通信机制,称为信号和时隙
可查询和可设计的对象属性
层次化和可查询的对象树进行组织
使用受保护的指针以自然的方式拥有对象所有权(QPointer)
跨库边界的动态演员表
提供有关Qt核心功能的更多信息:
元对象系统
属性机制
对象模型
对象树和所有权
信号和插槽
线程与并发编程
输入/输出,资源和容器(序列化qt数据类型,隐式共享,qt资源系统)。
其它关键框架。
动画框架
Qt中的JSON支持
状态机框架
如何创建Qt插件
事件系统
图形用户界面(GUI)组件的基类。包括OpenGL。 Qt GUI模块提供了用于窗口系统集成,事件处理,OpenGL和OpenGL ES集成,2D图形,基本图像,字体和文本的类。这些类由Qt的用户界面技术在内部使用,也可以直接使用,例如,使用低级OpenGL ES图形API编写应用程序。
对于编写用户界面的应用程序开发人员而言,Qt提供了更高级别的API,例如Qt Quick,它比Qt GUI模块中的启用程序更为合适
#include
QT += gui
主要包括:
2D图形
Qt GUI模块包含2D图形,图像,字体和高级字体的类。
QWindow与表面类型创建QSurface :: RasterSurface可与组合使用QBackingStore和QPainter的,Qt的高度优化的2D矢量图形API。QPainter支持绘制线条,多边形,矢量路径,图像和文本。有关更多信息,请参见“ 绘制系统和栅格窗口示例”。
Qt可以使用QImage和QPixmap类加载和保存图像。默认情况下,Qt支持最常见的图像格式,包括JPEG和PNG。用户可以通过QImageIOPlugin类添加对其他格式的支持。有关更多信息,请参见读取和写入图像文件。
Qt的排版是通过QTextDocument完成的,QTextDocument将QPainter API与Qt的字体类(主要是QFont)结合使用。倾向于使用低级API 而不是文本和字体处理的应用程序可以使用QRawFont和QGlyphRun之类的类。
支持对vulkan API接口支持(同 OpenGL 一样,Vulkan也由 Khronos 集团开发。它是 AMD Mantle 的后续版本,继承了前者强大的低开销架构,使软件开发人员能够全面获取 Radeon GPU 与多核 CPU 的性能、效率和功能。
相对于 OpenGL,Vulkan大幅降低了 CPU 在提供重要特性、性能
和影像质量时的“API 开销” (CPU 在分析游戏的硬件需求时所执行的后台工作),而且可以使用通常通过 OpenGL 无法访问的 GPU 硬件特性。)
OpenGL和OpenGL ES集成
Application Windows
Drag and Drop
音频,视频,广播和照相机功能的类。
Qt多媒体是必不可少的模块,它提供了一组丰富的QML类型和C ++类来处理多媒体内容。它还提供访问摄像头和收音机功能所需的API。随附的Qt音频引擎提供3D位置音频播放和内容管理的类型。
该模块的功能分为以下子模块:
Qt Multimedia 提供针对多媒体特定用例的API。
Qt MutilMedia Widgets 提供基于窗口小部件的多媒体API。
#include
#include
QT += multimedia multimediawidgets
import QtMultimedia 5.8
Qt MutilMedia
Qt Network提供了一组API,用于对使用TCP / IP的应用程序进行编程。请求,cookie和通过HTTP发送数据等操作由各种C ++类处理.
#include
QT += network
Qt network
Qt QML模块提供了使用QML语言开发应用程序和库的框架。它定义并实现了语言和引擎基础结构,并提供了一个API,使应用程序开发人员能够使用自定义类型扩展QML语言并将QML代码与JavaScript和C ++集成在一起。Qt QML模块同时提供QML API和C ++ API。
请注意,虽然Qt QML模块为QML应用程序提供了语言和基础结构,但Qt Quick模块提供了许多可视组件,模型视图支持,动画框架,以及用于构建用户界面的更多内容。
#include
QT += qml
import QtQml 2.xx
Qt Quick模块是用于编写QML应用程序的标准库。虽然Qt的QML模块提供QML引擎和语言基础设施方面,Qt Quick的模块提供了所有必要的与QML创建用户界面的基本类型。它提供了一个视觉画布,并包括用于创建和动画化视觉组件,接收用户输入,创建数据模型和视图以及延迟对象实例化的类型。
Qt Quick模块既提供QML API(用于提供使用QML语言创建用户界面的QML类型),又提供C ++ API(用于使用C ++代码扩展QML应用程序)。
注意:一组基于Qt Quick的UI控件也可用于创建用户界面
提供了一组用户界面元素来创建经典桌面式的用户界面。
#include < QtWidgets >
QT += widgets
Qt SQL是提供对SQL数据库支持的基本模块。Qt SQL的API分为不同的层:
驱动层
SQL API层
用户界面层
#include < QtSql >
QT += SQL
Qt附加模块为特定目的带来附加价值。这些模块可能仅在某些开发平台上可用。许多附加模块要么功能齐全,要么为了向后兼容而存在,或者仅适用于某些平台。每个附加模块分别指定其兼容性承诺。
Qt Automotive Suite
Qt for Automation
Qt for Device Creation
Qt Remote Objects
其他常用的插件模块等详细信息请参考Qt