Auf dieser Seite

QCanvasPainterItem Class

Die Klasse `QCanvasPainterItem` bietet die Möglichkeit, die Qt-Canvas-Painter-API im QML-Szenenbaum zu nutzen. Mehr...

Header: #include <QCanvasPainterItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Seit: Qt 6.11
Erbt von: QQuickRhiItem

Eigenschaften

Öffentliche Funktionen

QCanvasPainterItem(QQuickItem *parent = nullptr)
virtual ~QCanvasPainterItem() override
QColor fillColor() const
void setFillColor(QColor color)

Signale

Geschützte Funktionen

virtual QCanvasPainterItemRenderer *createItemRenderer() const = 0

Neu implementierte geschützte Funktionen

virtual QQuickRhiItemRenderer *createRenderer() override
virtual bool event(QEvent *event) override

Ausführliche Beschreibung

Um ein eigenes Zeichenelement zu erstellen, erstellen Sie zunächst eine Unterklasse von `QCanvasPainterItem` und implementieren dann zunächst deren einzige rein virtuelle öffentliche Funktion: ` createItemRenderer()`, die ein Objekt zurückgibt, das das eigentliche Zeichnen durchführt.

Der folgende Codeausschnitt zeigt die typische Struktur einer QCanvasPainterItem-Unterklasse. Ein Beispiel für die Klasse „ MyRenderer “ finden Sie unter „ 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;
};

Mithilfe der Eigenschaft „ QtQuick::Item::antialiasing “ lässt sich das Antialiasing deaktivieren. Der Standardwert ist „ true “. Wird dieser Wert auf „ false “ gesetzt, wird das Antialiasing deaktiviert, selbst wenn der Zeichen-Code „ QCanvasPainter::setAntialias()“ mit einem Wert größer als „ 0 “ aufruft. Das Deaktivieren des Antialiasings kann zu einer Leistungssteigerung führen.

Siehe auch QCanvasPainterItemRenderer.

Dokumentation zu den Eigenschaften

[read-only] debug : QVariantMap

Enthält eine Schlüssel-Wert-Zuordnung mit Darstellungsstatistiken. Die Daten werden nur erfasst, wenn die Umgebungsvariable „ QCPAINTER_DEBUG_COLLECT “ auf einen Wert ungleich Null gesetzt ist.

Die Daten werden in regelmäßigen Abständen aktualisiert, nicht bei jeder Neuzeichnung des Elements. Das Intervall beträgt derzeit eine Sekunde. Daher beziehen sich die empfangenen Daten in vielen Fällen auf eine frühere Zeichnung des Elements. Dies stellt bei der interaktiven Anzeige der Statistiken in der Regel kein Problem dar, sollte jedoch beachtet werden.

Um die Daten automatisch innerhalb des Elements in Form einer Überlagerung anzuzeigen, setzen Sie stattdessen die Umgebungsvariable ` QCPAINTER_DEBUG_RENDER `. Dies bietet eine praktische Abkürzung, wenn ohnehin beabsichtigt ist, die Werte auf dem Bildschirm anzuzeigen.

Die Liste der Schlüssel lautet derzeit wie folgt:

  • fillDrawCallCount
  • strokeDrawCallCount
  • textDrawCallCount
  • fillTriangleCount
  • strokeTriangleCount
  • textTriangleCount
  • Zeichnungsaufrufanzahl
  • Dreieck-Zählung
  • Bildspeicherverbrauch
  • Bildanzahl
  • Anzahl der Pfadgruppen
  • Anzahl zwischengespeicherter Teilpfade
  • Größe der zwischengespeicherten Pfad-Vertex-Daten

Notifier-Signal:

void debugChanged()

fillColor : QColor

Diese Eigenschaft legt die Farbe fest, die zum Ausfüllen des Elements verwendet werden soll, d. h. den Hintergrund des Elements.

Die Standardfarbe ist Schwarz.

Zugriffsfunktionen:

QColor fillColor() const
void setFillColor(QColor color)

Notifier-Signal:

void fillColorChanged()

Dokumentation der Member-Funktionen

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

Erstellt ein `QCanvasPainterItem` mit dem angegebenen ` parent `-Element.

[override virtual noexcept] QCanvasPainterItem::~QCanvasPainterItem()

Zerstört die „ QCanvasPainterItem “.

[pure virtual protected] QCanvasPainterItemRenderer *QCanvasPainterItem::createItemRenderer() const

Implementieren Sie diese Methode, um einen Painter für dieses Element (neu) zu erstellen. Die Painter-Klasse sollte von ` QCanvasPainterItemRenderer` abgeleitet sein. ` QCanvasPainterItem ` übernimmt die Verantwortung für das erstellte Objekt und löscht es bei Bedarf.

Beispielcode:

QCanvasPainterItemRenderer* MyItem::createItemRenderer() const { return new MyItemPainter(); }

[override virtual protected] QQuickRhiItemRenderer *QCanvasPainterItem::createRenderer()

Implementiert: QQuickRhiItem::createRenderer().

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

Implementiert: ` QQuickRhiItem::event(QEvent *e)`.

QColor QCanvasPainterItem::fillColor() const

Gibt die aktuelle Füllfarbe zurück.

Hinweis: Getter -Funktion für die Eigenschaft „fillColor“.

Siehe auch „ setFillColor()“.

void QCanvasPainterItem::setFillColor(QColor color)

Stellen Sie die Füllfarbe auf „ color “ ein. Diese Farbe wird zum Zeichnen des Hintergrunds des Elements verwendet. Die Standardfarbe ist Schwarz.

Hinweis: Wenn Sie die Füllfarbe so einstellen, dass sie nicht vollständig deckend ist (Alpha-Kanal kleiner als 255), denken Sie daran, auch „ alphaBlending “ auf „ true “ zu setzen.

Hinweis: Setter -Funktion für die Eigenschaft „ fillColor “.

Siehe auch „ fillColor()“ und „ 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.