Qt GUI 模块提供用于窗口系统集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图形、基本图像、字体及文本的类。这些类用于 Qt 用户界面技术内部,也可以直接使用,例如:使用低级 OpenGL ES 图形 API 编写应用程序。
对于编写用户界面的应用程序开发者而言,Qt 提供更高级别 API (像 Qt Quick,它比在 Qt GUI 模块中找到的使能器更适合)。
使用 Qt 模块要求直接或透过其它依赖链接到模块库。一些构建工具为此有贡献支持,包括 CMake and qmake .
使用
find_package()
命令去定位所需模块组件,在
Qt5
包:
find_package(Qt5 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget Qt5::Gui)
另请参阅 构建采用 CMake 概述。
若使用
qmake
去构建工程,默认包括 Qt GUI。要禁用 Qt GUI,添加以下行到
.pro
文件:
QT -= gui
Qt GUI 模块最重要的类是 QGuiApplication and QWindow 。想要在屏幕上展示内容的 Qt 应用程序,将需要用到这些。 QGuiApplication 包含主事件循环,来自窗口系统和其它源的所有事件都会被处理和分派。它还处理应用程序的初始化及定稿。
The QWindow 类表示在底层窗口系统中的窗口。它提供许多虚函数以处理事件 ( QEvent ) 从窗口系统,譬如:触摸输入、曝光、聚焦、击键及几何图形变化。
Qt GUI 模块包含用于 2D 图形、图像、字体及高级排印的类。
A QWindow 的创建采用表面类型 QSurface::RasterSurface 可以用于组合 QBackingStore and QPainter ,Qt 高度优化的 2D 向量图形 API。 QPainter 支持绘制线条、多边形、向量路径、图像及文本。更多信息,见 描绘系统 and 光栅窗口范例 .
Qt 可以加载和保存图像,使用 QImage and QPixmap 类。默认情况下,Qt 支持最常见的图像格式,包括 JPEG 和 PNG 等。用户可以添加支持其它格式凭借 QImageIOPlugin 类。更多信息,见 读写图像文件
Qt 中的排印是采用 QTextDocument 使用 QPainter API 组合 Qt 的字体类,首要是 QFont 。应用程序首选更低级的 API 来处理文本和字体,像类 QRawFont and QGlyphRun 可以使用。
QWindow 支持使用 OpenGL 和 OpenGL ES 进行渲染,取决于平台支持哪种。OpenGL 渲染的启用是通过设置 QWindow 的表面类型为 QSurface::OpenGLSurface ,选取格式属性采用 QSurfaceFormat ,然后创建 QOpenGLContext 以管理本机 OpenGL 上下文。此外,Qt 拥有 QOpenGLPaintDevice ,启用使用 OpenGL 加速 QPainter 渲染,还有方便类以简化 OpenGL 代码的编写,隐藏扩展处理的复杂性及 OpenGL ES 2 和桌面 OpenGL 之间的差异。方便类包括 QOpenGLFunctions 让应用程序使用桌面 OpenGL 的所有 OpenGL ES 2 函数,不必手动解析 OpenGL 函数指针,因此,允许跨平台开发针对移动或嵌入式设备的应用程序,及一些在更简单 Qt API 中包裹本机 OpenGL 功能的类:
最后,为提供对 OpenGL 较新版本 (3.0 及更高版本) 的更好支持,版本化的函数包裹器机制也是可用的:QOpenGLFunction_N_N 系列类暴露给定 OpenGL 版本和 profile 的所有函数,允许依赖现代,仅桌面的 OpenGL 特征,轻松开发桌面应用程序。
更多信息,见 OpenGL 窗口范例 .
Qt GUI 模块还包含一些数学类,以辅助 3D 图形相关的最常见数学运算。这些类包括 QMatrix4x4 , QVector4D and QQuaternion
A QWindow 的创建采用 QSurface::OpenGLSurface 可以用于组合 QPainter and QOpenGLPaintDevice 通过牺牲一些视觉品质让 OpenGL 硬件加速 2D 图形。
Qt5.10 添加支持 Vulkan 。这要求存在 LunarG Vulkan SDK .
在 Windows,SDK 设置环境变量
VULKAN_SDK
,会被检测到通过
configure
脚本。
在 Android,NDK 的 API Level 24 添加了 Vulkan 头。
相关类:
更多信息,见 Hello Vulkan 小部件范例 和 Hello Vulkan 窗口范例 .
更多信息在 拖放
Qt GUI 在商业许可下是可用的来自 Qt 公司 。此外,它在自由软件许可下也是可用的。从 Qt 5.4 起,这些自由软件许可是 GNU LGPL (次一般公共许可) 第 3 版 ,或 GNU GPL (一般公共许可) 第 2 版 。见 Qt 许可 进一步了解细节。
Furthermore, Qt GUI in Qt 5.12.12 may contain third-party modules under following permissive licenses: