Sur cette page

QCanvasPainterItem Class

La classe `QCanvasPainterItem` permet d'utiliser l'API Qt Canvas Painter dans le graphe de scène QML. En savoir plus...

En-tête : #include <QCanvasPainterItem>
CMake : find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Depuis : Qt 6.11
Hérite de : QQuickRhiItem

Propriétés

Fonctions publiques

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

Signaux

Fonctions protégées

virtual QCanvasPainterItemRenderer *createItemRenderer() const = 0

Fonctions protégées réimplémentées

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

Description détaillée

Pour créer votre propre élément de dessin, vous devez d'abord créer une sous-classe de QCanvasPainterItem, puis commencer par implémenter sa seule fonction publique virtuelle pure : createItemRenderer(), qui renvoie un objet chargé d'effectuer le dessin proprement dit.

L'extrait de code ci-dessous illustre la structure type d'une sous-classe de QCanvasPainterItem. Reportez-vous à QCanvasPainterItemRenderer pour un exemple de la classe d'MyRenderer.

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;
};

La propriété QtQuick::Item::antialiasing permet de désactiver l’anticrénelage. La valeur par défaut est true. Lorsqu’elle est définie sur false, l’anticrénelage est désactivé même si le code de dessin appelle QCanvasPainter::setAntialias() avec une valeur supérieure à 0. La désactivation de l’anticrénelage peut améliorer les performances.

Voir également QCanvasPainterItemRenderer.

Documentation sur les propriétés

[read-only] debug : QVariantMap

Contient une table clé-valeur des statistiques de rendu. Les données ne sont collectées que lorsque la variable d’environnement ` QCPAINTER_DEBUG_COLLECT ` est définie sur une valeur non nulle.

Les données sont mises à jour périodiquement, et non à chaque rafraîchissement de l’élément. L’intervalle est actuellement d’une seconde. Par conséquent, les données reçues se rapporteront souvent à un affichage antérieur de l’élément. Cela ne pose généralement pas de problème lors de l’affichage interactif des statistiques, mais il est important d’en tenir compte.

Pour afficher automatiquement les données à l’intérieur de l’élément sous forme de superposition, définissez plutôt la variable d’environnement QCPAINTER_DEBUG_RENDER. Cela constitue un raccourci pratique lorsque l’objectif est de toute façon d’afficher les valeurs à l’écran.

La liste des clés est actuellement la suivante :

  • fillDrawCallCount
  • strokeDrawCallCount
  • textDrawCallCount
  • fillTriangleCount
  • strokeTriangleCount
  • nombre de triangles de texte
  • nombre d'appels de dessin
  • nombre de triangles
  • utilisation de la mémoire pour les images
  • nombre d'images
  • nombre de groupes de chemins
  • nombre de sous-chemins mis en cache
  • taille des données de sommets de chemin mises en cache

Signal de notification :

void debugChanged()

fillColor : QColor

Cette propriété définit la couleur à utiliser pour le remplissage de l'élément, c'est-à-dire l'arrière-plan de l'élément.

La couleur par défaut est le noir.

Fonctions d'accès :

QColor fillColor() const
void setFillColor(QColor color)

Signal du notificateur :

void fillColorChanged()

Documentation des fonctions membres

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

Crée un objet `QCanvasPainterItem` à partir de l'élément ` parent ` fourni.

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

Supprime l'QCanvasPainterItem.

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

Implémentez cette méthode pour (re)créer un « painter » pour cet élément. La classe « painter » doit être dérivée de QCanvasPainterItemRenderer. La méthode QCanvasPainterItem prend en charge la gestion de l'objet créé et le supprime lorsque cela est nécessaire.

Exemple de code :

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

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

Réimplémente : QQuickRhiItem::createRenderer().

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

Réimplémente : QQuickRhiItem::event(QEvent *e).

QColor QCanvasPainterItem::fillColor() const

Renvoie la couleur de remplissage actuelle.

Remarque : fonctiongetter pour la propriété fillColor.

Voir aussi setFillColor().

void QCanvasPainterItem::setFillColor(QColor color)

Définissez la couleur de remplissage sur color. Cette couleur sera utilisée pour dessiner l'arrière-plan de l'élément. La couleur par défaut est le noir.

Remarque : lorsque vous définissez la couleur de remplissage comme étant partiellement transparente (canal alpha inférieur à 255), n'oubliez pas de définir également la propriété « alphaBlending » sur « true ».

Remarque : fonctionde définition de la propriété fillColor.

Voir également fillColor() et 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.