图形

跨平台应用程序可以使用 Qt 以显示图形元素。Qt 抽象了平台底层图形 API,以便开发者可以聚焦于应用程序代码。

Qt RHI (渲染硬件接口) 将来自 Qt 应用程序的 3D 图形调用,翻译成目标平台上的可用图形 API。

支持的图形 API:

  • OpenGL (version 2.1 and higher)
  • OpenGL ES (version 2.0 and higher)
  • Vulkan (version 1.0 and higher)
  • Direct3D 11 (version 11.1 and higher)
  • Direct3D 12 (version 12.0 and higher)
  • Metal (version 1.2 and higher)

Qt Quick 中的图形

Qt Quick 应用程序使用 场景图形 为渲染。场景图形渲染器可以创建有效图形调用并提高性能。场景图形拥有可访问 API,给予创建复杂且快速图形的灵活性。

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

选取渲染路径

Qt 尽可能使用目标平台的图形 API,不管怎样,采用特定 API 设置 Qt 的渲染路径是可能的。在许多情况下,选择特定 API 可以提高性能,且允许开发者在具有特定图形 API 的平台上部署。拜访 凭借 Qt 渲染硬件接口进行渲染 页面关于如何设置渲染路径在 QQuickWindow .

采用 Qt Quick 3D 的 3D 图形

Qt Quick 3D 是提供高级 API (用于基于 Qt Quick 创建 3D 内容和 3D 用户界面) 的插件。它扩展了 Qt Quick 场景图形 ,它使您可以在 2D Qt Quick 应用程序中实现 3D 内容。

着色器效果

The Qt Shader Tools 提供工具, QSB ,以将顶点和片段着色器翻译成 Qt Quick 接口包。尤其, ShaderEffect QML 类型和 QSGMaterial 子类可以使用 QSB 的输出。 Qt Quick 3D 有它自己的框架,用于将着色器导入 3D 场景。

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

采用 Qt GUI 的高级图形

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

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

采用 Qt GUI 的底层图形

Qt GUI provides cross-platform enablers for managing OpenGL contexts and Vulkan instances. Applications that perform rendering directly with OpenGL, OpenGL ES, or Vulkan can use QOpenGLContext , QOpenGLFunctions , QVulkanInstance , QVulkanFunctions ,和 QVulkanDeviceFunctions to manage contexts, instances, and gain access to the OpenGL and Vulkan API functionsin a portable manner.

Qt GUI also offers the Qt Rendering Hardware Interface (RHI) family of APIs, such as QRhi and QShader , for applications that want to perform rendering using the portable, cross-platform 3D rendering infrastructure Qt itself uses to implement the Qt Quick scene graph and the Qt Quick 3D rendering engine. These classes are offered as "semi-public" APIs with a limited compatibility promise for the time being, similarly to the Qt Platform Abstraction classes. However, the QRhi classes come with full documentation. See the QRhi class to get started.

The Qt GUI module on its own allows targeting a QWindow or an offscreen buffer, such as a QRhiTexture ,采用 QRhi -based rendering. With user interfaces based on QWidget or QML (Qt Quick) working with a QWindow backed by a native platform is not always the most convenient way. This is why the Qt Widgets module offers QRhiWidget , whereas Qt Quick provides QQuickRhiItem . These base classes allow convenient creation of QWidget or QQuickItem subclasses, instances of which perform portable QRhi -based rendering into a texture that is then composited automatically with the Widgets or Qt Quick scene.

Qt OpenGL 模块

The Qt OpenGL 模块用于要求访问 OpenGL 的应用程序。此模块用于保持兼容 Qt 5 应用程序和 Qt GUI。若用户界面使用 QWidget , QOpenGLWidget 是可以添加 OpenGL 场景的小部件。

打印

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

图像

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

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