QCanvasPainterItem Class
QCanvasPainterItem 类提供了一种在 QML 场景图中使用 Qt Canvas Painter API 的方法。更多
| Header: | #include <QCanvasPainterItem> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| 自 | Qt 6.11 |
| 继承于 | QQuickRhiItem |
| 状态: | 技术预览版 |
属性
公共功能
| QCanvasPainterItem(QQuickItem *parent = nullptr) | |
| virtual | ~QCanvasPainterItem() override |
| QColor | fillColor() const |
| void | setFillColor(const QColor &color) |
信号
| void | debugChanged() |
| void | fillColorChanged() |
受保护函数
| virtual QCanvasPainterItemRenderer * | createItemRenderer() const = 0 |
重新实现的受保护函数
| virtual QQuickRhiItemRenderer * | createRenderer() override |
详细说明
要编写自己的绘制项目,首先要创建 QCanvasPainterItem 的子类,然后开始实现其唯一的纯虚拟公共函数:createItemRenderer() ,该函数返回一个执行实际绘制的对象。
下面的代码片段显示了 QCanvasPainterItem 子类的典型结构。有关MyRenderer 类的示例,请参见QCanvasPainterItemRenderer 。
class MyItem : public QCanvasPainterItem { Q_OBJECT QML_NAMED_ELEMENT(MyItem) // exposed to QML, instantiate as MyItem { ... } // a custom property Q_PROPERTY(float value READ value WRITE setValue NOTIFY valueChanged) public: HelloItem(QQuickItem *parent = nullptr) : QCanvasPainterItem(parent) { } QCanvasPainterItemRenderer *createItemRenderer() const override { return new MyRenderer; } float value() const { return m_value; } void setValue(float newValue) { if (m_value != newValue) { m_value = newValue; emit valueChanged(); } } float m_value = 0.0f; };
另请参见 QCanvasPainterItemRenderer 。
属性文档
[read-only] debug : QVariantMap
包含渲染统计数据的键值映射。只有当环境变量QCPAINTER_DEBUG_COLLECT 设置为非零值时,才会收集数据。
数据会定期更新,而不是每次项目重新绘制时都更新。目前的间隔为一秒。因此,接收到的数据在很多情况下都是指项目的上一次绘制。在交互式显示统计数据时,这通常不是问题,但必须注意。
要以叠加的形式自动显示项目中的数据,可以设置环境变量QCPAINTER_DEBUG_RENDER 。这提供了一个方便的快捷方式,无论如何都可以在屏幕上显示数值。
目前的键列表如下:
- fillDrawCallCount
- strokeDrawCallCount
- 文本绘制调用次数
- 填充三角形计数
- 描边三角形计数
- 文本三角形计数
- drawCallCount
- 三角形计数
通知信号:
| void | debugChanged() |
fillColor : QColor
该属性用于保存填充项目(即项目背景)的颜色。
默认颜色为黑色。
访问功能:
| QColor | fillColor() const |
| void | setFillColor(const QColor &color) |
Notifier 信号:
| void | fillColorChanged() |
成员函数 文档
QCanvasPainterItem::QCanvasPainterItem(QQuickItem *parent = nullptr)
使用给定的parent 项目构建 QCanvasPainterItem。
[override virtual noexcept] QCanvasPainterItem::~QCanvasPainterItem()
[pure virtual protected] QCanvasPainterItemRenderer *QCanvasPainterItem::createItemRenderer() const
执行此方法可为此项目(重新)创建一个绘制器。绘画者类应从QCanvasPainterItemRenderer 继承。QCanvasPainterItem 拥有创建对象的所有权,并在需要时将其删除。
示例代码
QCanvasPainterItemRenderer* MyItem::createItemRenderer() const { return new MyItemPainter(); }
[override virtual protected] QQuickRhiItemRenderer *QCanvasPainterItem::createRenderer()
重新实现:QQuickRhiItem::createRenderer().
QColor QCanvasPainterItem::fillColor() const
返回当前的填充颜色。
注: 属性 fillColor 的获取函数。
另请参阅 setFillColor().
void QCanvasPainterItem::setFillColor(const QColor &color)
将填充颜色设置为color 。该颜色将用于绘制项目的背景。默认颜色为黑色。
注: 当设置填充颜色为不完全不透明(alpha 通道小于 255)时,请记得将alphaBlending 也设置为true 。
注: 属性fillColor 的设置函数。
另请参阅 fillColor() 和QQuickRhiItem::alphaBlending 。
© 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.