本页内容

QCanvasPainterItem Class

QCanvasPainterItem 类提供了一种在 QML 场景图中使用 Qt Canvas Painter API 的方法。更多内容...

标题: #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(QColor color)

信号

受保护函数

virtual QCanvasPainterItemRenderer *createItemRenderer() const = 0

重新实现的受保护函数

virtual QQuickRhiItemRenderer *createRenderer() override
virtual bool event(QEvent *event) 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:
    MyItem(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();
        }
    }

signals:
    void valueChanged();

private:
    float m_value = 0.0f;
};

通过QtQuick::Item::antialiasing 属性,可以禁用抗锯齿。其默认值为true 。当该属性设置为false 时,即使绘制代码调用的QCanvasPainter::setAntialias()参数值大于0 ,也会禁用抗锯齿。禁用抗锯齿可能会提高性能。

另请参阅 QCanvasPainterItemRenderer 。

属性文档

[read-only] debug : QVariantMap

包含一个渲染统计数据的键值映射。只有当环境变量QCPAINTER_DEBUG_COLLECT 被设置为非零值时,才会收集这些数据。

数据会定期更新,而非在项目每次重绘时更新。当前的更新间隔为一秒。因此,在许多情况下,收到的数据将对应该项目之前的绘制结果。在交互式显示统计数据时,这通常不会造成问题,但仍需注意这一点。

若要自动以叠加层的形式在对象内部显示数据,请设置环境变量QCPAINTER_DEBUG_RENDER 。当您本就打算将数值显示在屏幕上时,这提供了一种便捷的快捷方式。

当前的键列表如下:

  • fillDrawCallCount
  • strokeDrawCallCount
  • textDrawCallCount
  • fillTriangleCount
  • strokeTriangleCount
  • 文本三角形计数
  • 绘制调用次数
  • 三角形计数
  • 图像内存使用量
  • 图像计数
  • 路径组计数
  • 缓存子路径数
  • 缓存路径顶点数据大小

通知器信号:

void debugChanged()

fillColor : QColor

此属性用于指定填充项时使用的颜色,即项的背景色。

默认颜色为黑色。

访问函数:

QColor fillColor() const
void setFillColor(QColor color)

通知器信号:

void fillColorChanged()

成员函数文档

[explicit] QCanvasPainterItem::QCanvasPainterItem(QQuickItem *parent = nullptr)

使用给定的parent 项创建一个QCanvasPainterItem。

[override virtual noexcept] QCanvasPainterItem::~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()。

[override virtual protected] bool QCanvasPainterItem::event(QEvent *event)

重写了:QQuickRhiItem::event(QEvent *e)。

QColor QCanvasPainterItem::fillColor() const

返回当前的填充颜色。

注意: 这是 fillColor 属性的获取器 函数。

另请参阅 ` setFillColor()`。

void QCanvasPainterItem::setFillColor(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.