图形

Qt 5 中的图形处理首要透过命令式 QPainter API,或透过 Qt 的声明式 UI 语言、Qt Quick 及其场景图形后端。Qt 5 的图形能力还包括支持打印,及加载和保存各种图像格式。

2D 图形与 QPainter

QPainter 提供 API 为绘制向量图形、文本和图像在不同表面,或 QPaintDevice 实例,譬如 QImage , QOpenGLPaintDevice , QWidget ,和 QPrinter 。实际绘制发生在 QPaintDevice 's QPaintEngine 。软件光栅化器和 OpenGL (ES) 2.0 后端是 2 个最重要的 QPaintEngine 实现。光栅描绘引擎是 Qt 的软件光栅化器,并被用于绘制在 QImage or QWidget 。与 OpenGL 描绘引擎相比,它的优势在于启用抗锯齿时的高品质和完整特征集。

最重要的渲染目标为 QPainter 是:

QPainter 和相关类属于 Qt GUI 模块。

OpenGL 和 3D

OpenGL 是用于硬件加速和 3D 图形的最广泛采用的图形 API,在所有桌面平台和几乎一切移动及嵌入式平台上有实现。Qt 库包含许多可帮助用户将由 OpenGL 驱动的图形或其它图形 API 调用集成到其应用程序中的类,以及用于显示 3D 内容的附加模块。

在 Qt 5.0 之前,Qt 支持 OpenGL 的处理是通过 Qt OpenGL 模块。此模块仍存在,但新代码应瞄准使用新类在 Qt GUI 模块。基于它们的名称很容易区分这些类:类具有 QGL 前缀不应使用。相反,首选开头采用 QOpenGL .

Qt Quick 场景图形

Qt Quick 2 为渲染引入了 OpenGL (ES) 2.0 场景图形。一般来说,它能显著改进 Qt Quick 2 的性能相比 QGraphicsView / QPainter 基方式用于早期版本。

场景图形是 Item 场景的图形表示。可以认为它是图形的深度拷贝,包含足够信息以渲染所有项的无关结构。一旦设置,就可以独立于项状态对它进行操纵和渲染。在很多平台,甚至会在专用渲染线程中渲染场景图形,当 GUI 线程准备下一帧的状态时。

场景图形被使用当 import QtQuick 2.x 在 QML 文件,和使用 QQuickView 以运行它。

Qt Quick 可以与原生 OpenGL 渲染混合通过连接到信号 QQuickWindow::beforeRendering () 或 QQuickWindow::afterRendering () 其被发射,分别在 Qt Quick 场景图形渲染之前和之后。这些信号是从渲染线程发射的 (当适用时),且需要直接连接。

Qt Quick 也可以渲染使用 Qt Quick 2D Renderer 。此光栅描绘引擎在没有 OpenGL 的平台渲染 Qt Quick 应用程序。

打印

Qt 支持直接打印到本地或网络的实际打印机,及产生 PDF 输出。如何采用 Qt 进行打印的详细描述在 Qt Print Support 页面。

图像

Qt 支持图像的方便读取、写入及操纵透过 QImage 类。此外,对于如何更细粒度控制图像的加载或保存,可以使用 QImageReader and QImageWriter 类。为添加由 Qt 所提供的其它图像格式的支持,可以创建图像格式插件通过使用 QImageIOHandler and QImageIOPlugin .

读写图像文件 页面,了解更多信息。

另请参阅 描绘系统 .