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
| void | debugChanged() |
| void | fillColorChanged() |
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.