Qt GUI 模块提供用于窗口系统集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图形、基本图像、字体及文本的类。这些类用于 Qt 用户界面技术内部,也可以直接使用,例如:使用低级 OpenGL ES 图形 API 编写应用程序。
对于编写用户界面的应用程序开发者而言,Qt 提供更高级别 API (像 Qt Quick,它比在 Qt GUI 模块中找到的使能器更适合)。
要包括模块类定义,使用以下指令:
#include <QtGui>
若使用
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 图形。
Prior to Qt 5.0, the Qt GUI module was the monolithic container for all things relating to graphical user interfaces in Qt, and included the Qt widget set, the item views, the graphics view framework and also printing. Starting Qt 5, these classes have been moved to the Qt Widgets module. Printing has been moved to the Qt Print Support module. Please note that these modules can be excluded from a Qt installation.
Qt GUI now contains only a small set of enablers, which are generally useful for all graphical applications.
更多信息在 拖放
Qt GUI 在商业许可下是可用的来自 Qt 公司 。此外,它在自由软件许可下也是可用的。从 Qt 5.4 起,这些自由软件许可是 GNU LGPL (次一般公共许可) 第 3 版 ,或 GNU GPL (一般公共许可) 第 2 版 。见 Qt 许可 进一步了解细节。
Furthermore, Qt GUI in Qt 5.9.9 may contain third-party modules under following permissive licenses:
ANGLE Library | BSD 3 条款新 (或修订) 许可 |
ANGLE:用于 WebKit 的数组边界钳位器 | BSD 2 条款简化许可 |
ANGLE: Murmurhash | 公共领域 |
ANGLE: Systeminfo | BSD 2 条款简化许可 |
ANGLE: trace_event | BSD 3 条款新 (或修订) 许可 |
来自 FreeType 2 的抗锯齿光栅化器 | FreeType 工程许可或仅 GNU GPL (一般公共许可) 第 2.0 版 |
Cocoa 平台插件 | BSD 3 条款新 (或修订) 许可 |
Freetype 2 | FreeType 工程许可或仅 GNU GPL (一般公共许可) 第 2.0 版 |
Freetype 2 - BDF (位图分发格式) 支持 | MIT 许可 |
Freetype 2 - PCF (便携式编译格式) 支持 | MIT 许可 |
Freetype 2 - zlib | zlib 许可 |
HarfBuzz | MIT 许可 |
HarfBuzz-NG | MIT 许可 |
IAccessible2 IDL Specification | BSD 3 条款新 (或修订) 许可 |
LibJPEG | 独立 JPEG 组许可 |
LibPNG | libpng 许可和 libpng 许可 2 |
Android 本机风格 | Apache 许可 2.0 |
OpenGL ES 2 Headers | MIT 许可 |
OpenGL Headers | MIT 许可 |
Pixman | MIT 许可 |
平滑比例缩放算法 | BSD 2 条款简化许可和 Imlib2 许可 |
Wintab API | 公共领域 |
XCB | MIT 许可 |
xkbcommon | MIT Licenses (with no-advertisement clause) |