QPaintDevice Class
QPaintDevice 类是可通过 `QPainter` 进行绘制的对象的基类。更多内容...
| 头文件: | #include <QPaintDevice> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 被继承于: | QImage、QOpenGLPaintDevice 、QPagedPaintDevice 、QPaintDeviceWindow 、QPicture 、QPixmap 、QSvgGenerator ,以及QWidget |
- 所有成员列表(包括继承的成员)
- QPaintDevice 属于绘图类。
公共类型
| enum | PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, …, PdmDevicePixelRatioF_EncodedB } |
公共函数
| virtual | ~QPaintDevice() |
| int | colorCount() const |
| int | depth() const |
| qreal | devicePixelRatio() const |
| qreal | devicePixelRatioF() const |
| int | height() const |
| int | heightMM() const |
| int | logicalDpiX() const |
| int | logicalDpiY() const |
| virtual QPaintEngine * | paintEngine() const = 0 |
| bool | paintingActive() const |
| int | physicalDpiX() const |
| int | physicalDpiY() const |
| int | width() const |
| int | widthMM() const |
静态公共成员
(since 6.8) int | encodeMetricF(QPaintDevice::PaintDeviceMetric metric, double value) |
受保护函数
| QPaintDevice() | |
| virtual int | metric(QPaintDevice::PaintDeviceMetric metric) const |
详细说明
绘图设备是对二维空间的一种抽象表示,可使用QPainter 在该空间上进行绘制。其默认坐标系的原点位于左上角。X轴向右递增,Y轴向下递增。单位为一个像素。
QPaintDevice 的绘图功能目前由QWidget 、QImage 、QPixmap 、QPicture 和QPrinter 这些子类实现。
要实现对新后端的支持,您必须从 QPaintDevice 派生类,并重写虚拟函数paintEngine(),以告知QPainter 应使用哪个绘制引擎在此特定设备上进行绘制。请注意,您还必须创建相应的绘制引擎才能在该设备上绘制,即从QPaintEngine 派生类并重写其虚拟函数。
警告:Qt XML 要求在创建任何绘制设备之前,必须先存在一个QGuiApplication 对象。绘制设备会访问窗口系统资源,而这些资源在应用程序对象创建之前尚未初始化。
QPaintDevice 类提供了若干函数,用于返回各种设备度量数据:depth() 函数返回其位深度(位平面数量)。height() 函数返回其在默认坐标系单位中的高度(例如,对于QPixmap 和QWidget ,以像素为单位),而heightMM() 则返回设备以毫米为单位的高度。 同样地,width() 和widthMM() 函数分别以默认坐标系单位和毫米为单位返回设备的宽度。此外,还可以使用受保护的metric() 函数,通过将所需的PaintDeviceMetric 作为参数来获取度量信息。
logicalDpiX() 和logicalDpiY() 函数分别以每英寸点数为单位返回设备的水平和垂直分辨率。physicalDpiX() 和physicalDpiY() 函数同样以每英寸点数为单位返回设备的分辨率,但请注意,如果逻辑分辨率与物理分辨率不同,相应的QPaintEngine 必须处理该映射关系。 最后,colorCount() 函数返回绘图设备可用的不同颜色数量。
另请参阅 QPaintEngine 、QPainter 、坐标系和绘图系统。
成员类型文档
enum QPaintDevice::PaintDeviceMetric
描述了绘制设备的各项指标。
| 常量 | 值 | 描述 |
|---|---|---|
QPaintDevice::PdmWidth | 1 | 绘图设备的宽度,以默认坐标系单位表示(例如,对于QPixmap 和QWidget 而言为像素)。另请参阅width()。 |
QPaintDevice::PdmHeight | 2 | 绘制设备在默认坐标系单位下的高度(例如,对于QPixmap 和QWidget 而言,单位为像素)。另请参阅height()。 |
QPaintDevice::PdmWidthMM | 3 | 绘制设备以毫米为单位的宽度。另请参阅widthMM()。 |
QPaintDevice::PdmHeightMM | 4 | 绘图设备的高度(单位:毫米)。另请参阅heightMM()。 |
QPaintDevice::PdmNumColors | 5 | 绘图设备可用的不同颜色数量。另请参阅colorCount()。 |
QPaintDevice::PdmDepth | 6 | 绘图设备的位深度(位平面数)。另请参阅depth()。 |
QPaintDevice::PdmDpiX | 7 | 设备的水平分辨率,单位为每英寸点数。另请参阅logicalDpiX()。 |
QPaintDevice::PdmDpiY | 8 | 设备的垂直分辨率,单位为每英寸点数。另请参阅logicalDpiY()。 |
QPaintDevice::PdmPhysicalDpiX | 9 | 设备的水平分辨率,单位为每英寸点数(dpi)。另请参阅physicalDpiX()。 |
QPaintDevice::PdmPhysicalDpiY | 10 | 设备的垂直分辨率,单位为每英寸点数。另请参阅physicalDpiY()。 |
QPaintDevice::PdmDevicePixelRatio | 11 | 设备的设备像素比。常见值为:1 表示标准 DPI 显示器,2 表示高 DPI “视网膜”显示器。 |
QPaintDevice::PdmDevicePixelRatioScaled | 12 | 该设备的缩放后设备像素比。这与 PdmDevicePixelRatio 完全相同,区别在于该值经过常数因子缩放,以便支持具有分数缩放因子的绘制设备。所使用的常数缩放因子由 devicePixelRatioFScale() 返回。该枚举值自 Qt 5.6 起引入。 |
QPaintDevice::PdmDevicePixelRatioF_EncodedA (since Qt 6.8) | 13 | 该枚举项与相应的B 项配合使用,以编码的double 浮点数值形式表示设备的设备像素比。支持分数DPR值的QPaintDevice 子类应在重写metric()函数时实现对这两个枚举项的支持。返回值应为encodeMetricF()函数的计算结果。 |
QPaintDevice::PdmDevicePixelRatioF_EncodedB (since Qt 6.8) | 14 | 参见 PdmDevicePixelRatioF_EncodedA。 |
另请参阅 metric() 和devicePixelRatio()。
成员函数文档
[noexcept protected] QPaintDevice::QPaintDevice()
创建一个绘图设备。此构造函数只能由 QPaintDevice 的子类调用。
[virtual noexcept] QPaintDevice::~QPaintDevice()
销毁绘制设备并释放窗口系统资源。
int QPaintDevice::colorCount() const
返回绘图设备可用的不同颜色数量。如果可用颜色数量过多,以至于无法用 int 数据类型表示,则返回 INT_MAX。
int QPaintDevice::depth() const
返回绘图设备的位深度(位平面数量)。
qreal QPaintDevice::devicePixelRatio() const
返回设备的设备像素比。
常见值为:1 表示普通 DPI 显示屏,2 表示高 DPI “视网膜”显示屏。
qreal QPaintDevice::devicePixelRatioF() const
返回该设备的设备像素比,结果为浮点数。
[static, since 6.8] int QPaintDevice::encodeMetricF(QPaintDevice::PaintDeviceMetric metric, double value)
返回针对度量标准metric 编码的value 。实现metric() 的子类应使用此函数进行编码
| 常量 | 描述 |
|---|---|
as | 整数返回值,当查询指标指定编码后的浮点数值时。 |
该函数在 Qt 6.8 中引入。
int QPaintDevice::height() const
返回绘图设备在默认坐标系单位下的高度(例如,对于 `QPixmap ` 和 `QWidget`,结果为像素)。
另请参阅 heightMM()。
int QPaintDevice::heightMM() const
返回绘图设备的高度(单位为毫米)。由于平台的限制,可能无法使用此函数来确定小部件在屏幕上的实际物理尺寸。
另请参阅 height()。
int QPaintDevice::logicalDpiX() const
返回设备的水平分辨率(单位为每英寸点数),该值用于计算字体大小。对于 X11,该值通常与通过 `widthMM()` 计算出的值相同。
请注意,如果 logicalDpiX() 的返回值不等于physicalDpiX() 的计算结果,则相应的QPaintEngine 必须处理分辨率映射。
另请参阅 logicalDpiY() 和physicalDpiX()。
int QPaintDevice::logicalDpiY() const
返回设备的垂直分辨率(单位为每英寸点数),该值用于计算字体大小。对于 X11,该值通常与通过 `heightMM()` 计算出的结果一致。
请注意,如果 logicalDpiY() 的返回值不等于physicalDpiY() 的计算结果,则相应的QPaintEngine 必须处理分辨率映射。
另请参阅 logicalDpiX() 和physicalDpiY()。
[virtual protected] int QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
返回给定绘制设备metric 的度量信息。
另请参阅 PaintDeviceMetric 。
[pure virtual] QPaintEngine *QPaintDevice::paintEngine() const
返回一个指向用于在设备上绘制的绘图引擎的指针。
bool QPaintDevice::paintingActive() const
如果当前正在对该设备进行绘制(即有人已调用QPainter::begin(),但尚未为该设备调用QPainter::end()),则返回true ;否则返回false 。
另请参阅 QPainter::isActive()。
int QPaintDevice::physicalDpiX() const
返回设备的水平分辨率(单位为每英寸点数)。例如,在打印时,该分辨率指的是打印机的物理分辨率。而逻辑DPI则指的是实际绘图引擎所使用的分辨率。
请注意,如果 physicalDpiX() 与logicalDpiX() 的值不一致,则相应的QPaintEngine 必须处理分辨率映射。
另请参阅 physicalDpiY() 和logicalDpiX()。
int QPaintDevice::physicalDpiY() const
返回设备的水平分辨率(单位为每英寸点数)。例如,在打印时,该分辨率指的是打印机的物理分辨率。而逻辑DPI则指的是实际绘图引擎所使用的分辨率。
请注意,如果 physicalDpiY() 与logicalDpiY() 不相等,则相应的QPaintEngine 必须处理分辨率映射。
另请参阅 physicalDpiX() 和logicalDpiY()。
int QPaintDevice::width() const
返回绘图设备的宽度,单位为默认坐标系的单位(例如,对于QPixmap 和QWidget ,单位为像素)。
另请参阅 widthMM()。
int QPaintDevice::widthMM() const
返回绘制设备的宽度(单位为毫米)。由于平台的限制,可能无法使用此函数来确定小部件在屏幕上的实际物理尺寸。
另请参阅 width()。
© 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.