Qt整体组织架构、六大模块及跨平台处理模块分析

目录

一、QT整体组织架构

1、操作系统层

Qt 支持的操作系统及其相关 API 

Qt QPA(Qt Platform Abstraction)插件的交互组件

2、跨平台插件层

Qt 跨平台接口的具体类别、相关类及其作用:

跨平台处理QPA 及其相关接口

Qt Platform Adaptation (QPA)

3、基础开发层

Qt Core:Qt 框架的基石

基于平台适配层QPA

非基于平台适配层QPA

4、附加工具层

二、六大模块

1、Qt Essentials(基础模块)

2、Qt Add-Ons(附加模块)

3、Qt Add-Ons in Technical Preview(实验性功能)

4、Qt Extension Modules(扩展模块)

5、Qt Platform Adaptation (QPA)(平台适配层)

6、Qt Development Tools(开发工具)


一、QT整体组织架构

Qt组织形式四层说明图示:

1、操作系统层

Qt 支持的操作系统及其相关 API 

操作系统类别

示例操作系统

Qt 交互的 API 或相关技术

桌面操作系统

Windows(Win7/Win10/Win11)、macOS、Linux(Ubuntu、Fedora、Debian 等)

- 窗口系统 API:Windows API (Win32/UWP)、macOS Cocoa API、Linux Xlib/XCB API、Wayland 协议等

移动操作系统

Android、iOS

- 窗口系统 API:Android SDK、iOS UIKit

嵌入式操作系统

QNX、嵌入式 Linux、Windows 的嵌入式版本

- 针对嵌入式的定制 Qt 解决方案,如 Qt for Device Creation

实时操作系统 (RTOS)

FreeRTOS、QNX RTOS

- 用于对时间有严格要求的应用,Qt 可在部分 RTOS 上运行(如通过 Qt for MCUs)

Qt QPA(Qt Platform Abstraction)插件的交互组件

交互类别

Qt 依赖的操作系统 API 或技术

Qt 相关模块/插件

窗口系统 API

Windows API (Win32/UWP), macOS Cocoa, Xlib/XCB, Wayland, Android SDK, iOS UIKit

QPA 插件,如 QWindowsIntegration、QCocoaIntegration、QXcbIntegration、QWaylandIntegration

图形 API

Direct3D (Windows), Metal (macOS/iOS), OpenGL/Vulkan (跨平台)

Qt Quick Scene Graph、QOpenGLContext、QRhi(Qt Rendering Hardware Interface)

输入设备驱动

操作系统的输入设备管理(键盘、鼠标、触摸屏等)

QPA 事件处理,QKeyEvent, QMouseEvent, QTouchEvent

文件系统 API

文件管理(Windows: Win32 API, Linux/macOS: POSIX)

QFile, QDir, QStandardPaths

网络 API

Sockets、TCP/IP 协议栈

QTcpSocket, QUdpSocket, QNetworkAccessManager

线程 API

POSIX 线程(pthread)、Windows 线程

QThread, QtConcurrent

多媒体 API

Windows: DirectShow/Media Foundation, macOS/iOS: AVFoundation, Linux: GStreamer

Qt Multimedia (QMediaPlayer, QCamera)

传感器 API

Android/iOS 传感器接口

Qt Sensors, Qt Positioning

调用示例:

Qt应用程序 -> Qt Multimedia 模块 -> (WMF 插件) -> Windows Media Foundation API -> Windows 系统/硬件驱动

WMF 插件(wmfengine.dll)本质上是 Qt Multimedia 和 Windows 系统 Media Foundation API 之间的桥梁,它使得 Qt 开发者能够使用统一的 Qt API 来利用 Windows 系统强大的多媒体能力。

2、跨平台插件层

这些接口通过 Qt Platform Abstraction (QPA) 架构与平台特定的插件协同工作,确保跨平台的可移植性和一致性。

Qt 跨平台接口的具体类别、相关类及其作用:

窗口系统

  • 接口:QGuiApplication、QScreen

  • 作用:提供窗口管理、屏幕信息获取以及 GUI 事件的分发功能。QGuiApplication 是 Qt GUI 应用程序的核心类,负责事件循环和窗口系统集成;QScreen 提供屏幕相关的属性和操作。

  • QPA 实现:通过插件如 qwindows(Windows)、qcocoa(macOS)、qxcb(Linux/X11)实现,与 QPlatformIntegration 协作。

图形渲染

  • 接口:QOpenGLContext、QRhi

  • 作用:封装多种图形 API(如 OpenGL、Vulkan、Metal、Direct3D),提供硬件加速渲染支持。QOpenGLContext 用于管理 OpenGL 上下文,QRhi 是一个更现代的渲染硬件接口,支持多种后端。

  • QPA 实现:通过插件如 qopengl、qvulkan、qmetal、qd3d11,结合 QPlatformOpenGLContext 或 QRhi 实现。

输入事件

  • 接口:QKeyEvent、QMouseEvent、QTouchEvent

  • 作用:处理键盘、鼠标和触摸屏的输入事件,确保应用程序能够跨平台一致地响应用户操作。

  • QPA 实现:通过插件如 qevdev(Linux)、qwindows(Windows)、qcocoa(macOS),结合 QPlatformInputContext 实现。

文件系统

  • 接口:QFile、QDir、QStandardPaths

  • 作用:提供对文件、目录和标准存储路径的访问,方便跨平台的文件操作。QFile 用于文件读写,QDir 用于目录操作,QStandardPaths 提供系统标准路径。

  • QPA 实现:通过插件如 qfsengine、qandroid、qcocoa,结合 QPlatformFileDialogHelper 实现。

网络通信

  • 接口:QTcpSocket、QUdpSocket、QNetworkAccessManager

  • 作用:处理 TCP/UDP 套接字通信以及 HTTP/HTTPS 请求,支持跨平台的网络功能。

  • QPA 实现:通过 qtnetwork 和 qtwebsockets 模块实现,核心功能由 QNetworkAccessManager 提供。

线程与并发

  • 接口:QThread、QtConcurrent

  • 作用:提供跨平台的线程管理和并行计算支持。QThread 用于创建和管理线程,QtConcurrent 提供高层次的并发工具。

  • QPA 实现:通过 qthread、qposix(POSIX 系统)、qwindows 等实现,与 QThreadPool 协作。

多媒体

  • 接口:QMediaPlayer、QCamera

  • 作用:支持音视频播放和摄像头访问,适用于跨平台的多媒体应用。

  • QPA 实现:通过插件如 wmfengine(Windows)、dsengine(DirectShow)、GStreamer(Linux)实现。

传感器与定位

  • 接口:QSensor、QGeoPositionInfoSource

  • 作用:获取传感器数据(如加速度计)和 GPS 位置信息,支持设备传感器功能。

  • QPA 实现:依赖底层平台支持,通常通过特定设备的插件实现。

跨平台处理QPA 及其相关接口

跨平台接口作用QPA 插件Qt垮平台接口
窗口系统窗口管理、事件处理qwindows, qcocoa, qxcb, qwaylandQWindowsIntegration, QCocoaIntegration, QXcbIntegration
图形 API硬件加速渲染,支持 OpenGL, Vulkan, Metal, Direct3Dqopengl, qvulkan, qmetal, qd3d11QPlatformOpenGLContext, QRhi
输入设备 API处理键盘、鼠标、触摸输入qevdev, qwindows, qcocoaQPlatformInputContext
文件系统 API访问文件、目录、存储路径qfsengine, qandroid, qcocoaQPlatformFileDialogHelper
网络 API网络通信、套接字、HTTP/HTTPS 访问qtnetwork, qtwebsocketsQNetworkAccessManager
线程 API提供多线程支持qthread, qposix, qwindowsQThread, QThreadPool
多媒体 API播放音频、视频,访问摄像头wmfengine, dsengine, GStreamerQMediaPlayer, QCamera

Qt Platform Adaptation (QPA)

类别

组件名称

描述

窗口系统集成

QPlatformIntegration

平台集成的根类,管理事件分发和窗口创建。

QPlatformAccessibility

处理辅助功能,支持无障碍服务(如屏幕阅读器)。

QPlatformBackingStore

管理离屏缓冲区,优化窗口内容渲染。

QPlatformClipboard

处理剪贴板操作,支持跨应用数据传输。

QPlatformCursor

管理光标显示和行为,与平台样式一致。

QPlatformDrag

处理拖放操作,支持平台拖放机制。

QPlatformFontDatabase

管理字体数据库,确保使用平台可用字体。

QPlatformGraphicsBuffer

处理图形缓冲区管理,支持高效渲染。

QPlatformInputContext

管理输入法上下文,支持复杂文本输入。

QPlatformOffscreenSurface

处理离屏表面,用于非屏幕显示的渲染(如打印预览)。

QPlatformOpenGLContext

管理 OpenGL 上下文,支持硬件加速渲染。

QPlatformScreen

表示屏幕属性,提供分辨率、刷新率等信息。

QPlatformServices

提供平台特定服务,如访问原生 API。

QPlatformSharedGraphicsCache

管理共享图形缓存,优化资源使用。

QPlatformSurface

表面管理的基类,处理窗口或缓冲区通用接口。

QPlatformWindow

负责窗口系统集成,处理窗口创建、移动和关闭等操作。

风格/主题

QPlatformTheme

处理平台主题集成,确保 UI 风格与平台匹配。

平台调色板

管理平台特定的颜色方案(如深色模式)。

平台字体

管理平台特定的字体,使用系统默认字体渲染。

主题提示

提供主题相关提示,支持自定义风格适配平台。

原生对话框和菜单

QPlatformDialogHelper

协助实现原生对话框(如文件选择对话框)。

QPlatformMenu

处理原生菜单实现,支持平台菜单样式和行为。

QPlatformMenuBar

管理原生菜单栏,确保与平台一致。

QPlatformMenuItem

处理单个菜单项实现,支持平台特定定制。

3、基础开发层

Qt Core:Qt 框架的基石

Qt Core 是 Qt 框架中最基础且必不可少的模块。它提供了所有其他 Qt 模块赖以构建的核心非 GUI 功能。几乎所有的模块都依赖于Qt Core,包括QPA接口。

跨平台性 (Cross-Platform Nature):

  • 操作系统抽象: 它封装了不同操作系统提供的底层系统调用和 API,例如文件系统操作、线程管理、网络通信等,提供了一套平台无关的接口。
  • 统一的数据类型和工具类: 它定义了一套跨平台的数据类型(例如 QStringQListQMap)和工具类,可以在所有支持的平台上一致地工作。
  • 核心机制的跨平台实现: Qt 的核心机制,如事件循环、信号与槽机制、元对象系统等,都在 Qt Core 中实现,并且在不同平台上以一致的方式运行。

主要功能 (Functionalities):

  • 基本数据类型和工具类 (字符串、容器、日期时间、动态数组、数学函数、随机数、JSON/XML基础支持)
  • 核心对象模型 (对象模型、信号与槽、元对象系统)
  • 事件处理 (事件循环、事件处理机制)
  • 输入/输出和文件系统 (文件操作、目录操作、数据流)
  • 线程和并发 (线程管理、并发编程工具)
  • 时间和定时器 (定时器)
  • 设置和配置 (应用程序设置管理)
  • 国际化 (文本翻译和本地化支持)
  • 插件支持 (创建和加载插件的框架)
  • 调试和日志 (调试输出和日志记录)
  • 网络基础 (基础网络相关类和概念)

基于平台适配层QPA

传统界面开发的模块

  • Qt Widgets 模块

功能:提供构建传统桌面式用户界面的类,例如 QMainWindow(主窗口)、QPushButton(按钮)、QLabel(标签)、QTableWidget(表格)等。它是传统 GUI 开发的核心模块,适合创建经典的桌面应用程序界面。

作用:开发者通过 Qt Widgets 可以轻松创建和管理用户界面组件,如对话框、菜单栏和工具栏。

依赖:Qt Widgets 依赖 Qt GUI,因为它使用 Qt GUI 提供的绘图和事件处理功能;同时间接依赖 Qt Core,因为 Qt GUI 依赖 Qt Core。

  • Qt GUI 模块

功能:提供图形用户界面(GUI)的基础功能,包括事件处理(如鼠标点击、键盘输入)、窗口管理、2D 图形绘制、字体和文本处理等。它是 Qt Widgets 的基础模块。

作用:为 Qt Widgets 提供底层支持,例如通过 QPainter 进行绘图,通过 QEvent 处理用户输入。

依赖:Qt GUI 依赖 Qt Core,因为它需要 Qt Core 提供的信号与槽机制、事件循环和对象管理功能。

  • Qt Core 模块

功能:提供核心非 GUI 功能,包括信号与槽机制、事件系统、线程管理(QThread)、文件操作(QFile)、容器类(QList、QMap)等。它是整个 Qt 框架的基础模块。

作用:支持所有 Qt 模块的核心功能,是传统界面开发的基础。

依赖:Qt Core 无其他 Qt 模块依赖,是最底层的模块。

  • 模块之间的关系Qt Widgets → Qt GUI → Qt Core

Qt Widgets 依赖 Qt GUI:Qt Widgets 是基于 Qt GUI 构建的,使用 Qt GUI 提供的窗口管理和事件处理功能。例如,QWidget 类继承自 Qt GUI 的功能来实现界面绘制和事件响应。

Qt GUI 依赖 Qt Core:Qt GUI 需要 Qt Core 提供的核心功能,如事件循环(QEventLoop)和信号与槽机制(QObject),来处理 GUI 事件和对象通信。

Qt Core 无依赖:作为基础模块,Qt Core 不依赖其他 Qt 模块,但所有模块都直接或间接依赖它。

  • 以下是模块依赖关系的表格形式:

模块

依赖

说明

Qt Widgets

Qt GUI, Qt Core

提供传统桌面 UI 控件,依赖 GUI 渲染和 Core 基础功能

Qt GUI

Qt Core

提供图形渲染和事件处理,依赖 Core 的对象模型和事件系统

Qt Core

基础模块,提供信号与槽、事件循环等

非传统界面开发的模块

Qt 的非传统界面开发通常指使用 Qt Quick 进行用户界面设计,这是一种基于 QML(Qt Meta-object Language)语言的现代、灵活的 UI 开发方式。相较于传统的 Qt Widgets 开发,Qt Quick 更适合移动设备、嵌入式系统以及需要动态、流畅界面的桌面应用。以下将详细介绍涉及的主要模块、模块之间的关系,以及一个典型的开发流程。

Qt Quick 开发中涉及的主要模块如下:

  • Qt Quick

功能:提供构建现代用户界面的核心功能,包括基本控件(如 Rectangle、Text)、布局管理、动画、状态机、触摸支持等。

作用:支持创建高度动态和响应式的用户界面,适合桌面、移动和嵌入式设备。

依赖:依赖 Qt QML 和 Qt GUI,因为它使用 QML 语言定义 UI,并需要 GUI 渲染支持。

  • Qt QML

功能:提供 QML 语言的解析和执行环境。QML 是一种声明式语言,用于定义用户界面和交互逻辑。

作用:支持属性绑定、动态对象创建、信号与槽机制等,是 Qt Quick 的基础。

依赖:依赖 Qt GUI(用于渲染)和 Qt Core(提供基础功能如信号与槽)。

  • Qt GUI

功能:为 Qt Quick 提供图形渲染和事件处理的基础支持,负责将 QML 描述的界面元素绘制到屏幕上。

作用:包括 2D 图形绘制、窗口管理、事件分发(如鼠标、键盘、触摸事件)等。

依赖:依赖 Qt Core,利用其对象模型、事件系统和线程管理功能。

  • Qt Core

功能:Qt 框架的核心模块,提供基础功能,所有 Qt 模块都依赖于它。

作用:包括信号与槽机制、事件循环、线程管理、文件操作等,是所有模块的基础。

依赖:无其他 Qt 模块依赖,是最底层的模块。

  • 模块之间的关系

依赖关系链可以简化为:Qt Quick → Qt QML → Qt GUI → Qt Core

  1. Qt Quick 依赖 Qt QML 和 Qt GUI

    Qt Quick 是基于 QML 构建的 UI 框架,使用 Qt QML 解析和执行 QML 代码,并依赖 Qt GUI 进行图形渲染和事件处理。例如,Qt Quick 中的 ApplicationWindow 需要 Qt GUI 来管理窗口。

  2. Qt QML 依赖 Qt GUI 和 Qt Core

    Qt QML 需要 Qt GUI 的图形功能来渲染界面元素(如文本、图像),同时依赖 Qt Core 的基础功能(如信号与槽、事件循环)来支持 QML 的动态行为。

  3. Qt GUI 依赖 Qt Core

    Qt GUI 利用 Qt Core 提供的对象模型(如 QObject)、事件系统(如 QEvent)和线程管理(如 QThread)等功能,确保图形界面的正常运行。

  • 以下是模块依赖关系的表格形式:

模块

依赖

说明

Qt Quick

Qt QML, Qt GUI, Qt Core

提供现代 UI,依赖 QML 解析和 GUI 渲染

Qt QML

Qt GUI, Qt Core

解析 QML 代码,依赖 GUI 渲染和 Core 基础功能

Qt GUI

Qt Core

提供图形渲染和事件处理,依赖 Core 的对象模型和事件系统

Qt Core

基础模块,提供信号与槽、事件循环等

非基于平台适配层QPA

QtNetwork 模块如何与操作系统交互

QtNetwork 的主要目标是提供一套跨平台的、易于使用的 API 来进行网络编程,而无需开发者直接面对不同操作系统复杂的网络编程接口。为了实现这一点,QtNetwork 在其内部构建了一个抽象层,这个抽象层负责将 Qt 的高级网络类(如 QTcpSocket, QUdpSocket, QNetworkAccessManager 等)的操作转化为底层操作系统能够理解的网络调用。

  • QtNetwork

  1. 提供高级网络类: 包含用于 TCP、UDP、HTTP、FTP 等协议的类,例如 QTcpSocket (TCP 连接)、QUdpSocket (UDP 通信)、QNetworkAccessManager (高级网络请求管理) 等。
  2. 封装平台相关的网络操作: QtNetwork 内部实现了针对不同操作系统的网络操作逻辑。它会根据当前运行的平台选择合适的后端实现来执行网络任务。
  3. 管理网络状态和事件: 负责跟踪网络连接的状态、处理接收到的数据、以及报告错误等。
  4. 提供异步操作机制: 许多网络操作(如连接、发送、接收)都是异步的,QtNetwork 利用 QtCore 的信号与槽机制来通知应用程序操作的结果。
  • QtNetwork 依赖于 QtCore
  1. 对象模型: QtNetwork 的类需要继承自 QObject,以便能够使用 Qt 的对象管理、内存管理和类型系统。
  2. 信号与槽: QtNetwork 使用信号与槽进行异步通信和事件通知,这是 QtCore 的核心特性。
  3. 事件循环: QtNetwork 的非阻塞 I/O 和事件驱动模型依赖于 QtCore 的事件循环来处理来自操作系统的网络事件。
  4. 平台抽象: QtCore 提供的平台抽象层帮助 QtNetwork 屏蔽了不同操作系统在某些底层细节上的差异。
  • QtNetwork 与操作系统的交互方式:

QtNetwork 模块本身并不直接包含与所有操作系统进行交互的代码。相反,它依赖于操作系统提供的原生网络 API。QtNetwork 的实现会根据不同的操作系统选择性地调用这些 API。

Unix-like 系统 (Linux, macOS, etc.):

QtNetwork 的后端实现会使用标准的 POSIX sockets API。

当调用 QTcpSocket::connectToHost() 时,QtNetwork 内部会调用 socket() 系统调用创建一个套接字,然后调用 connect() 系统调用尝试连接。

发送数据时,会调用 send()write() 系统调用。

接收数据时,会调用 recv()read() 系统调用。

监听端口时(例如在 QTcpServer 中),会使用 bind()listen() 系统调用。

接受连接时,会使用 accept() 系统调用。

QtNetwork 会使用非阻塞 I/O 和事件通知机制(例如 select()poll() 或更现代的 epoll())来高效地处理多个套接字上的事件,并将其转化为 Qt 的信号。

Windows 系统:

QtNetwork 的后端实现会使用 Windows Sockets (Winsock) API。

Winsock 提供了与 POSIX sockets 类似的功能,但函数名称和使用方式可能略有不同(例如,需要初始化 Winsock 库)。

QtNetwork 会将 Qt 的网络类方法映射到相应的 Winsock 函数上,例如 socket(), connect(), send(), recv(), bind(), listen(), accept() 等。

Windows 也提供了事件通知机制(例如通过 WSAAsyncSelect() 或更高级的 I/O 完成端口 (IOCP))供 QtNetwork 使用,以实现异步网络操作和事件处理。

4、附加工具层

此部分依赖于基础库,或独立存在。

工具名称作用
Qt CreatorQt 官方集成开发环境 (IDE),用于编写、调试、测试和部署 Qt 应用程序。
Qt Designer用于设计 Qt Widgets 界面的可视化工具,支持拖拽 UI 组件进行布局。
Qt Quick Designer专门用于 Qt Quick/QML 开发的 UI 设计工具,可直观调整 QML 界面。
Qt Design Studio一款高级 UI 设计和原型工具,专注于 Qt Quick,提供更强大的可视化编辑、动画制作和状态管理功能,通常用于创建复杂的用户界面和用户体验。
Qt Linguist用于国际化 Qt 应用,提供翻译管理功能,包含 Linguist 翻译器、lupdate(提取翻译文本)、lrelease(生成发布文件)。
Qt Assistant提供 Qt 文档的浏览和查询功能,方便开发者查阅 API。
Qt Virtual Keyboard提供可定制的虚拟键盘,适用于嵌入式系统。
Qt Charts用于创建数据可视化的图表组件,支持折线图、柱状图、饼图等。
Qt 3D Studio设计和开发 3D 用户界面的工具,适用于 Qt 3D 应用。

二、六大模块

1、Qt Essentials(基础模块)

这些模块是 Qt 的基础,确保核心功能的一致性。适用于所有平台,以下是具体模块及其功能:

模块名称

功能描述

Qt Core

提供核心非 GUI 功能,包括容器、线程管理、事件管理等,Qt Core模块

Qt GUI

提供基本的图形用户界面功能,适用于桌面应用,Qt GUI模块

Qt Widgets

扩展 Qt GUI,提供基于 C++ 的小部件功能,Qt Widgets 模块

Qt Test

提供单元测试功能,用于测试 Qt 应用和库(仅源代码兼容),Qt Test模块

Qt Quick Test

提供 Qt Quick 测试功能(仅源代码兼容)Qt Quick Test 模块

Qt Quick

提供嵌入 Qt Quick 的 C++ 类,Qt Quick 模块

Qt Quick Controls

提供 Qt Quick 控件的 C++ 接口,Qt Quick Controls 模块

Qt Quick Widgets

提供将 Qt Quick 集成到 C++ 应用中的功能,Qt Quick Widgets 模块

2、Qt Add-Ons(附加模块)

这些模块提供特定功能,可能平台相关。以下是具体模块及其功能:

模块名称

功能描述

Qt Bluetooth

提供蓝牙操作,如设备扫描和连接,Qt Bluetooth 模块

Qt Charts

提供图表 API,用于创建图表,Qt Charts 模块

Qt CoAP

提供 CoAP 协议的类,用于物联网通信,Qt CoAP 模块

Qt Concurrent

支持并发执行程序代码,Qt Concurrent 模块

Qt D-Bus

提供基于 D-Bus 协议的进程间通信(仅 Unix),Qt D-Bus 模块

Qt Data Visualization

提供数据可视化 API,Qt Data Visualization 模块

Qt HTTP Server

提供 HTTP 服务器框架,Qt HTTP Server 模块

Qt Help

提供在应用中集成在线文档的类,Qt Help 模块

Qt Location

提供位置和导航信息的接口,Qt Location 模块

Qt Multimedia

提供音频、视频和摄像头功能,Qt Multimedia 模块

Qt NFC

提供 NFC 论坛标签访问 API,Qt NFC 模块

Qt Network

提供网络编程的类,使其更易于移植,Qt Network 模块

Qt Network Authorization

提供网络授权支持(如 OAuth),Qt Network Authorization 模块

Qt OpenGL

提供 OpenGL 的 C++ 类,简化 OpenGL 在 Qt 中的使用,Qt OpenGL 模块

Qt Positioning

提供位置信息的接口,Qt Positioning 模块

Qt Print Support

提供打印功能,使其更易于移植,Qt Print Support 模块

Qt Qml

提供 Qt Qml 模块的 C++ API,Qt Qml 模块

Qt Remote Objects

提供在进程间共享 QObject 属性、信号和槽的机制,Qt Remote Objects 模块

Qt SCXML

提供从 SCXML 文件创建和使用状态机的类,Qt SCXML 模块

Qt SQL

提供 SQL 数据库的抽象层,支持 ODBC、SQLITE、MySQL、PostgreSQL 等,Qt SQL 模块

Qt SVG

提供 SVG 图像处理功能,Qt SVG 模块

Qt Sensors

提供传感器数据读取类,Qt Sensors 模块

Qt Serial Bus

提供串行总线数据的读取和写入类,Qt Serial Bus 模块

Qt Serial Port

提供串行端口访问的类,Qt Serial Port 模块

Qt Spatial Audio

提供 3D 音频功能,Qt Spatial Audio 模块

Qt State Machine

提供创建和执行状态图的类,Qt State Machine 模块

Qt TextToSpeech

提供文本到语音引擎的 C++ API,Qt TextToSpeech 模块

Qt UI Tools

提供处理 Qt Widgets Designer 创建的表单的类,Qt UI Tools 模块

Qt Virtual Keyboard

提供虚拟键盘输入方法的类,Qt Virtual Keyboard 模块

Qt Wayland Compositor

提供用于编写 Wayland 显示服务器的 C++ 类,Qt Wayland Compositor 模块

Qt WebChannel

提供 WebSocket 通信的类,Qt WebChannel 模块

Qt WebEngine Core

提供 Qt WebEngineQuick 和 QtWebEngineWidgets 共享的公共 API,Qt WebEngine Core 模块

Qt WebEngine Quick

提供 Qt WebEngine 的 Qt Quick 接口,Qt WebEngine Quick 模块

Qt WebEngine Widgets

提供基于 QWidget 的 Web 内容渲染类,Qt WebEngine Widgets 模块

Qt WebSockets

提供 WebSocket 通信的类,Qt WebSockets 模块

Qt WebView

提供 WebView 的设置和使用帮助函数,Qt WebView 模块

Qt XML

提供 XML 的 C++ 实现,包括 DOM 和 SAX,Qt XML 模块

3、Qt Add-Ons in Technical Preview(实验性功能)

提供实验性功能,尚未完全稳定,例如:

Qt Location:提供位置和导航信息的接口,Qt Location 模块

开发者可以试用这些模块并提供反馈。

4、Qt Extension Modules(扩展模块)

这些模块提供额外功能,可能在发布计划、平台支持或兼容性方面有所不同:

模块名称

功能描述

Qt PDF

提供 PDF 文档渲染功能,Qt PDF 模块

Qt 5 Core Compatibility

包含 Qt 5 Core API,在 Qt 6 中移除,Qt 5 Core Compatibility 模块

QAxContainer

Windows 专用,访问 ActiveX 控件和 COM 对象,QAxContainer 模块

QAxServer

Windows 专用,将标准 Qt 二进制文件转为 COM 服务器,QAxServer 模块

Qt MQTT

提供 MQTT 协议的类,用于消息发布和订阅,Qt MQTT 模块

Qt OPC UA

提供 OPC UA 功能的 Qt API,Qt OPC UA 模块

Qt Widgets Designer

提供创建自定义小部件插件的类,Qt Widgets Designer 模块

5、Qt Platform Adaptation (QPA)(平台适配层)

平台适配层,通过平台插件(如 qxcb、qwindows)实现跨平台支持。

窗口系统集成

  • 核心类:QPlatformIntegration, QPlatformWindow

  • 功能:

    • 窗口创建与管理:通过 QPlatformWindow 创建和管理窗口,支持窗口的显示、移动、调整大小、关闭等操作。

    • 事件分发:将底层操作系统的事件(如鼠标点击、键盘输入)分发到 Qt 的事件循环。

    • 屏幕管理:通过 QPlatformScreen 提供屏幕属性(如分辨率、刷新率、多屏支持)。

    • 实现插件:QWindowsIntegration(Windows)、QCocoaIntegration(macOS)、QXcbIntegration(Linux/X11)、QWaylandIntegration(Linux/Wayland)。

  • 作用:确保 Qt 应用程序能够与平台的窗口系统无缝交互。

图形渲染支持

  • 核心类:QPlatformOpenGLContext, QPlatformBackingStore, QPlatformOffscreenSurface

  • 功能:

    • OpenGL 上下文管理:QPlatformOpenGLContext 提供硬件加速渲染的平台实现,支持 OpenGL。

    • 离屏渲染:QPlatformBackingStore 管理窗口内容的离屏缓冲区,用于优化绘制性能;QPlatformOffscreenSurface 支持非屏幕渲染(如打印预览)。

    • 图形缓冲区:QPlatformGraphicsBuffer 处理底层的图形缓冲区管理。

    • 共享缓存:QPlatformSharedGraphicsCache 优化跨上下文的图形资源使用。

  • 作用:支持跨平台的图形渲染,尤其是硬件加速功能,适配不同平台的图形 API。

输入事件处理

  • 核心类:QPlatformInputContext, QPlatformCursor, QPlatformDrag

  • 功能:

    • 输入法支持:QPlatformInputContext 处理复杂输入(如多语言输入法),适配平台特定的输入机制。

    • 光标管理:QPlatformCursor 控制光标的外观和行为,与平台样式一致。

    • 拖放操作:QPlatformDrag 实现跨平台的拖放功能(如文件拖放)。

  • 作用:统一处理键盘、鼠标、触摸屏等输入事件,确保输入体验一致。

主题与风格适配

  • 核心类:QPlatformTheme

  • 功能:

    • UI 风格:通过 QPlatformTheme 提供平台的主题信息(如按钮、滚动条的外观),与 QStyle 和 QStyleHint 协作。

    • 调色板:管理平台特定的颜色方案(如 Windows 深色模式、macOS 系统颜色)。

    • 字体:确保文本渲染使用平台的默认字体。

    • 主题提示:提供开发者自定义风格的提示,适配平台特性。

  • 作用:使 Qt 应用程序的外观和行为与目标平台保持一致,提升用户体验。

原生对话框与菜单

  • 核心类:QPlatformDialogHelper, QPlatformMenu, QPlatformMenuBar, QPlatformMenuItem

  • 功能:

    • 对话框:QPlatformDialogHelper 调用平台的原生对话框(如文件选择、消息框)。

    • 菜单:QPlatformMenu 和 QPlatformMenuBar 实现原生菜单和菜单栏,QPlatformMenuItem 处理单个菜单项。

  • 作用:利用平台的原生 UI 组件,提升应用程序的集成度和熟悉感。

辅助功能支持

  • 核心类:QPlatformAccessibility

  • 功能:

    • 提供对平台无障碍服务的支持(如屏幕阅读器)。

    • 将 Qt 控件的信息暴露给辅助技术。

  • 作用:确保应用程序符合无障碍标准,服务特殊用户群体。

剪贴板操作

  • 核心类:QPlatformClipboard

  • 功能:

    • 处理跨应用程序的剪贴板数据传输。

    • 支持文本、图像等多种数据格式。

  • 作用:实现跨平台的剪贴板功能。

字体与文本渲染

  • 核心类:QPlatformFontDatabase

  • 功能:

    • 管理平台的字体数据库。

    • 确保文本渲染使用系统可用字体。

  • 作用:统一跨平台的字体显示效果。

平台特定服务

  • 核心类:QPlatformServices

  • 功能:

    • 提供对平台原生 API 或系统功能的访问。

    • 例如打开 URL、调用系统通知等。

  • 作用:增强 Qt 应用程序与平台的深度集成。

表面管理

  • 核心类:QPlatformSurface

  • 功能:

    • 作为窗口和缓冲区的通用接口基类。

    • 管理不同类型的渲染表面。

  • 作用:为窗口和离屏渲染提供统一的抽象。

窗口系统集成

这些组件确保 Qt 与底层窗口系统集成,处理显示和交互功能:

类名作用
QPlatformIntegration核心平台集成,管理平台特定的初始化和功能。
QPlatformAccessibility处理辅助功能,支持屏幕阅读器等无障碍服务。
QPlatformBackingStore管理离屏缓冲区(backing store),用于优化窗口内容的渲染和更新。
QPlatformClipboard处理剪贴板操作,支持在应用程序之间复制和粘贴数据。
QPlatformCursor管理鼠标光标的显示和行为,确保与平台原生光标一致。
QPlatformDrag处理拖放操作,支持平台原生的拖放机制。
QPlatformFontDatabase管理系统中可用的字体数据库,确保文本渲染时能够正确加载和使用字体。
QPlatformGraphicsBuffer处理图形缓冲区,用于存储和管理图像数据,优化图形性能。
QPlatformInputContext管理输入法上下文,处理文本输入,支持多语言输入和复杂的输入法。
QPlatformOffscreenSurface处理离屏表面(off-screen surface),用于在没有物理屏幕的情况下进行渲染,例如用于后台处理或测试。
QPlatformOpenGLContext管理 OpenGL 上下文,提供与底层图形硬件的接口,支持硬件加速的 2D 和 3D 图形渲染。
QPlatformScreen表示物理屏幕的属性信息,例如分辨率、像素密度、可用区域等,提供显示相关的接口。
QPlatformServices提供访问操作系统特定服务的接口,例如打开 URL、发送邮件等原生 API 的调用。
QPlatformSharedGraphicsCache管理共享的图形缓存,用于在多个窗口或应用程序之间共享图形资源,优化内存使用。
QPlatformSurface表面管理的基类,代表一个可以绘制内容的表面,例如窗口或离屏缓冲区。
QPlatformWindow通过 QWindow 类处理窗口系统的集成,负责窗口的创建、管理和事件处理。

风格/主题

 QPlatformTheme:处理平台主题集成,确保外观一致。

  • 平台调色板:管理平台颜色方案,确保颜色匹配。

  • 平台字体:管理平台字体,确保文本渲染规范。

  • 主题提示:提供主题相关提示,支持自定义风格。

原生对话框和菜单

这些类使 Qt 能够使用平台的原生 UI 组件,提升用户体验:

类名作用
QPlatformDialogHelper协助实现操作系统原生的对话框,例如文件选择对话框、颜色选择对话框等。
QPlatformMenu处理操作系统原生的菜单(例如上下文菜单),确保其外观和行为与平台一致。
QPlatformMenuBar管理应用程序窗口的原生菜单栏,确保其外观和功能与平台匹配。
QPlatformMenuItem处理原生菜单栏或菜单中的单个菜单项,允许进行平台特定的定制和配置。

插件与平台支持

QPA 用于抽象平台特定的窗口系统和输入设备,通过插件实现对不同平台的支持。官方文档列出了多个插件,例如:

插件名称

插件类名

描述

qandroid

QAndroidPlatformIntegration

Android 支持

qbsdfb

QBsdFbIntegration

BsdFb 支持

qcocoa

QCocoaIntegrationPlugin

macOS 支持

qdirect2d

QWindowsDirect2DIntegrationPlugin

Direct2D 支持(用于 QPixmap 和 QBackingStore)

qdirectfb

QDirectFbIntegrationPlugin

DirectFB 支持

qeglfs

QEglFSIntegrationPlugin

嵌入式 Linux 的 EGLFS 支持

qhaiku

QHaikuIntegration

Haiku 支持

qios

QIOSIntegrationPlugin

iOS 支持

qlinuxfb

QLinuxFbIntegrationPlugin

嵌入式 Linux 的 LinuxFB 支持

qvnc

QVncIntegration

VNC 支持

qwayland

Multiple (e.g., QWaylandIntegrationPlugin)

Wayland 支持

qwindows

QWindowsIntegrationPlugin

Windows 支持

qxcb

QXcbIntegrationPlugin

X Window System (X11) 支持

这些插件通过子类化 QPlatform* 类实现具体功能,例如 qminimal 插件用于不需要窗口系统集成的工具(如 qmlplugindump),并支持通过环境变量将窗口内容转储为图像。


 

6、Qt Development Tools(开发工具)

提供开发工具,包括:

工具名称作用

集成开发环境 (IDE)

Qt CreatorQt 官方集成开发环境 (IDE),用于编写、调试、测试和部署 Qt 应用程序。

用户界面设计工具

Qt Designer用于设计 Qt Widgets 界面的可视化工具,支持拖拽 UI 组件进行布局。
Qt Quick Designer专门用于 Qt Quick/QML 开发的 UI 设计工具,可直观调整 QML 界面。
Qt Design Studio一款高级 UI 设计和原型工具,专注于 Qt Quick,提供更强大的可视化编辑、动画制作和状态管理功能,通常用于创建复杂的用户界面和用户体验。

构建工具

qmakeQt 自带的构建工具,生成 Makefile 以编译项目。
CMake支持 Qt 开发的 CMake 构建系统,更加通用,与现代 C++ 项目兼容性更好。

元对象编译器 & 资源编译器 & UI 编译器

moc (Meta-Object Compiler)Qt 的元对象编译器,用于处理包含 Q_OBJECT 宏的 C++ 类,生成实现信号与槽、属性系统、元对象系统等 Qt 特性的代码。
rcc (Resource Compiler)Qt 的资源编译器,用于将应用程序所需的资源文件(如图标、图片、UI 文件等)打包到可执行文件中。
uic (User Interface Compiler)Qt 的用户界面编译器,用于将 Qt Designer 创建的 .ui 文件转换为 C++ 代码。

国际化 (i18n) 工具

Qt Linguist用于国际化 Qt 应用,提供翻译管理功能,包含 Linguist 翻译器、lupdate(提取翻译文本)、lrelease(生成发布文件)。
lupdate(Qt Linguist 的一部分) 用于从 Qt 源代码中提取出需要翻译的文本,生成 .ts 文件。
lrelease(Qt Linguist 的一部分) 用于将翻译人员编辑好的 .ts 文件转换为应用程序可以加载的 .qm 文件。

调试和性能分析工具

Qt Debugging Tools提供调试 Qt 应用的工具,如 QML Profiler、GammaRay、Valgrind 等。
tracegen用于生成 Qt 跟踪事件,帮助分析应用程序性能和行为。
qmlcachegen用于提前生成 QML 模块的缓存,提高 Qt Quick 应用程序的启动速度。
qmlplugindump用于检查 QML 插件内容。

测试工具

Qt TestQt 的单元测试框架,用于测试 Qt C++ 代码的正确性。
Qt Test Runner用于运行 Qt Test 编写的单元测试。

部署工具

Qt Installer Framework用于创建跨平台安装包,支持 Windows、Linux、macOS 安装程序。

Qt Deploy Tool

(通常集成在构建过程中) 用于将 Qt 应用程序及其依赖打包在一起,方便部署。

帮助文档

Qt Assistant提供 Qt 文档的浏览和查询功能,方便开发者查阅 API。

其他工具

Qt Virtual Keyboard提供可定制的虚拟键盘,适用于嵌入式系统。
Qt Charts用于创建数据可视化的图表组件,支持折线图、柱状图、饼图等。
Qt 3D Studio设计和开发 3D 用户界面的工具,适用于 Qt 3D 应用。
Qt for Python (PySide6)提供 Qt for Python 的支持,允许使用 Python 编写 Qt 应用(虽然是 Python 支持,但通常被认为是 Qt 的开发工具之一)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值