本页内容

绘制设备与后端

创建绘制设备

QPaintDevice 类是可绘制对象的基类,即QPainter 可以在任何QPaintDevice 子类上进行绘制。QPaintDevice 的绘制功能主要由QWidget 、QImage 、QPixmap 、QPicture 、QPrinter 和QOpenGLPaintDevice 等方法实现。

控件

QWidget 类是 Qt Widgets 模块中用户界面元素的基类。它从窗口系统接收鼠标、键盘及其他事件,并在屏幕上绘制自身的表示。

图像

QImage 类提供了一种与硬件无关的图像表示形式,该表示形式专为I/O操作以及直接像素访问和操作而设计和优化。QImage 支持多种图像格式,包括单色、8位、32位以及带Alpha通道的图像。

将QImage 用作绘制设备的优势之一在于,它能够以平台无关的方式保证任何绘制操作的像素精确性。另一个好处是,绘制操作可以在与当前GUI线程不同的线程中执行。

Pixmap

QPixmap 类是一种离屏图像表示形式,专为在屏幕上显示图像而设计和优化。与QImage 不同,Pixmap中的像素数据是内部的,并由底层窗口系统管理,即只能通过QPainter 函数,或将QPixmap 转换为QImage 来访问像素。

为了优化使用QPixmap 进行绘制,Qt提供了QPixmapCache 类,该类可用于存储生成成本较高但又不会占用超过缓存限制的存储空间的临时像素图。

Qt XML 还提供了继承自 `QPixmap` 的便捷类 `QBitmap `。`QBitmap ` 保证生成单色(1 位色深)像素图,主要用于创建自定义的 `QCursor ` 和 `QBrush ` 对象,以及构造 `QRegion ` 对象。

OpenGL 绘制设备

如前所述,Qt 提供了便于在 Qt 应用程序中使用 OpenGL 的类。例如,QOpenGLPaintDevice 通过QPainter 启用了用于渲染的 OpenGL API。

图片

QPicture 类是一种绘图设备,用于记录和重放QPainter 命令。Picture 将绘图命令以平台无关的格式序列化到 I/O 设备中。QPicture 还具有分辨率无关性,即QPicture 可以在不同的设备(例如 svg、pdf、ps、打印机和屏幕)上显示出相同的效果。

Qt XML 提供了QPicture::load() 和QPicture::save() 函数,以及用于加载和保存图片的流操作符。

自定义后端

要实现对新后端的支持,可以继承QPaintDevice 类,并重写虚拟函数QPaintDevice::paintEngine(),以告知QPainter 应使用哪个绘制引擎在该特定设备上进行绘制。为了能够在设备上实际绘制,该绘制引擎必须是通过继承QPaintEngine 类创建的自定义绘制引擎。

© 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.