本页内容

图形

跨平台应用程序可以使用 Qt 来显示图形元素。Qt 对平台底层的图形 API 进行了抽象,从而使开发人员能够专注于应用程序代码。

位于 Qt 与目标图形 API 之间的 Qt 渲染硬件接口

Qt 渲染硬件接口 (RHI) 将 Qt 应用程序的 3D 图形调用转换为目标平台上可用的图形 API。

支持的图形 API 包括:

  • OpenGL(2.1 及更高版本)
  • OpenGL ES(2.0 及以上版本)
  • Vulkan(1.0 及以上版本)
  • Direct3D 11(11.1 及以上版本)
  • Direct3D 12(12.0 及以上版本)
  • Metal(1.2 及以上版本)

应用程序中的图形渲染Qt Quick

Qt Quick 应用程序中的图形渲染采用场景图实现。场景图渲染器能够生成高效的图形调用并提升性能。该场景图提供了一个易于使用的 API,使您能够灵活地创建既复杂又高效的图形效果。

以下列表中的页面包含有关渲染Qt Quick 应用程序的更多信息。

选择渲染路径

Qt 会在可能的情况下使用目标平台的图形 API,但也可以将 Qt 的渲染路径设置为使用特定的 API。在许多情况下,选择特定的 API 可以提高性能,并允许开发人员在具有特定图形 API 的平台上进行部署。 请访问“通过 Qt 渲染硬件接口进行渲染”页面,了解如何在QQuickWindow 中设置渲染路径。

2D 图形

Qt 提供了多种不同的 API 用于绘制 2D 图形基元。有关此方面的概述,请参阅关于Qt 中 2D 图形的单独页面。

3D 图形(配合Qt Quick 3D

Qt Quick 3D 是一个基于Qt Quick 的扩展组件,提供用于创建3D内容和3D用户界面的高级API。它扩展了Qt Quick 场景图,使您能够在2DQt Quick 应用程序中实现3D内容。

运行 Qt Quick 3D 场景的 Qt 6 基准测试演示

着色器效果

QtShader Tools提供了一个名为 QSB 的工具,用于将顶点着色器和片段着色器转换为适用于Qt Quick 接口的包。特别是,ShaderEffect 的 QML 类型和QSGMaterial 的子类可以使用 QSB 的输出结果。 Qt Quick 3D 它拥有自己的框架,用于将着色器导入 3D 场景。

以下列表包含有关着色器效果的信息。

展示着色器效果的 Qt Quick 3D 场景

《高级图形》中的材质和着色器,使用提供了一个高级的窗口、绘图和排版系统。xml-ph-0000@deepl.internal提供了一个API,用于在不同表面上绘制矢量图形、文本和图像Qt GUI

Qt GUI 提供了一个高级的窗口、绘图和排版系统。QPainter 提供了一个API,用于将矢量图形、文本和图像绘制到不同的表面或QPaintDevice 实例上,例如QImage 、QOpenGLPaintDevice 、QWidget 和QPrinter 。对于Qt Widgets 用户界面,Qt使用软件渲染器。

以下列表包含有关 Qt GUI 高级绘图 API 的信息。

使用Qt GUI

Qt GUI 提供了用于管理 OpenGL 上下文和 Vulkan 实例的跨平台支持。直接使用 OpenGL、OpenGL ES 或 Vulkan 进行渲染的应用程序可以使用QOpenGLContext 、QOpenGLFunctions 、QVulkanInstance 、QVulkanFunctions 以及QVulkanDeviceFunctions 来管理上下文和实例,并以可移植的方式访问 OpenGL 和 Vulkan API 函数。

Qt GUI 此外,还提供了 Qt 渲染硬件接口 (RHI) 系列 API,例如QRhi 和QShader ,供希望使用 Qt 自身用于实现Qt Quick 场景图和Qt Quick 3D 渲染引擎的、可移植且跨平台的 3D 渲染基础设施来执行渲染的应用程序使用。 这些类目前作为“半公开”API提供,兼容性承诺有限,这与Qt平台抽象类类似。不过,QRhi 类附带了完整的文档。请参阅QRhi 类以开始使用。

该 Qt GUI 该模块本身支持通过基于QRhi 的渲染,将目标定位到QWindow 或离屏缓冲区(例如QRhiTexture )。对于基于QWidget 或QML(Qt Quick )的用户界面而言,使用由原生平台支持的QWindow 并不总是最便捷的方式。因此, Qt Widgets 模块提供了QRhiWidget ,而Qt Quick 则提供了QQuickRhiItem 。这些基类便于创建QWidget 或QQuickItem 的子类,其实例能够以QRhi 为基础进行可移植的渲染,并将结果渲染到纹理中,随后该纹理会自动与Widgets或Qt Quick 场景进行合成。

Qt OpenGL 模块

该 Qt OpenGL 模块适用于需要访问 OpenGL 的应用程序。该模块旨在保持与 Qt 5 应用程序以及Qt GUI 的兼容性。对于使用QWidget 的用户界面,QOpenGLWidget 是一个可用于添加 OpenGL 场景的小部件。

打印

Qt 既支持直接打印到本地或网络上的实际打印机,也支持生成 PDF 输出。关于如何使用 Qt 进行打印的详细说明,请参阅 Qt Print Support 页面中进行了详细说明。

图像

QImage QImageReader QImageWriter QImageIOHandler QImageIOPluginXML-PH-0000@deepl.internal

有关更多信息,请参阅“读写图像文件”页面。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.