Sur cette page

QSGNode Class

La classe QSGNode est la classe de base de tous les nœuds du graphe de scène. En savoir plus...

En-tête : #include <QSGNode>
CMake : find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake : QT += quick
Hérité par :

QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode et QSGTransformNode

Types publics

flags DirtyState
enum DirtyStateBit { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, DirtyMaterial, …, DirtySubtreeBlocked }
enum Flag { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, InternalReserved }
flags Flags
enum NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, RenderNodeType }

Fonctions publiques

QSGNode()
virtual ~QSGNode()
void appendChildNode(QSGNode *node)
QSGNode *childAtIndex(int i) const
int childCount() const
QSGNode *firstChild() const
QSGNode::Flags flags() const
void insertChildNodeAfter(QSGNode *node, QSGNode *after)
void insertChildNodeBefore(QSGNode *node, QSGNode *before)
virtual bool isSubtreeBlocked() const
QSGNode *lastChild() const
void markDirty(QSGNode::DirtyState bits)
QSGNode *nextSibling() const
QSGNode *parent() const
void prependChildNode(QSGNode *node)
virtual void preprocess()
QSGNode *previousSibling() const
void removeAllChildNodes()
void removeChildNode(QSGNode *node)
void setFlag(QSGNode::Flag f, bool enabled = true)
void setFlags(QSGNode::Flags f, bool enabled = true)
QSGNode::NodeType type() const

Description détaillée

La classe QSGNode peut être utilisée comme conteneur parent. Les nœuds enfants sont ajoutés à l’aide des méthodes appendChildNode(), prependChildNode(), insertChildNodeBefore() et insertChildNodeAfter(). L’ordre des nœuds est important, car les nœuds de géométrie sont rendus selon leur ordre dans le graphe de scène.

Les nœuds du graphe de scène contiennent un mécanisme qui décrit les parties de la scène qui ont été modifiées. Cela inclut les matrices combinées, l’opacité cumulée, les modifications apportées à la hiérarchie des nœuds, etc. Ces informations peuvent être utilisées à des fins d’optimisation au sein du moteur de rendu du graphe de scène. Pour que le moteur de rendu puisse rendre correctement les nœuds, il est important que les utilisateurs appellent ` QSGNode::markDirty()` avec les indicateurs appropriés lorsque des nœuds sont modifiés. La plupart des fonctions des classes de nœuds appellent implicitement ` markDirty()`. Par exemple, ` QSGNode::appendChildNode()` appellera ` markDirty()` en lui passant ` QSGNode::DirtyNodeAdded`.

Si les nœuds changent à chaque image, la fonction ` preprocess()` peut être utilisée pour appliquer les modifications à un nœud à chaque image où il est affiché. L’utilisation de ` preprocess()` doit être explicitement activée en définissant le drapeau ` QSGNode::UsePreprocess ` sur le nœud.

La fonction virtuelle isSubtreeBlocked() permet de désactiver complètement une sous-arborescence. Les nœuds d’une sous-arborescence bloquée ne seront pas prétraités (preprocessed()) et ne seront pas affichés.

Remarque : toutes les classes préfixées par QSG doivent être utilisées exclusivement sur le thread de rendu du graphe de scène. Voir Graphe de scène et rendu pour plus d’informations.

Documentation sur les types de membres

enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState

Utilisé dans la fonction ` QSGNode::markDirty()` pour indiquer comment le graphe de scène a évolué.

ConstanteValeurDescription
QSGNode::DirtyMatrix0x0100La matrice d'une fonction « QSGTransformNode » a changé.
QSGNode::DirtyNodeAdded0x0400Un nœud a été ajouté.
QSGNode::DirtyNodeRemoved0x0800Un nœud a été supprimé.
QSGNode::DirtyGeometry0x1000La géométrie d'une « QSGGeometryNode » a changé.
QSGNode::DirtyMaterial0x2000Le matériau d'un « QSGGeometryNode » a changé.
QSGNode::DirtyOpacity0x4000L'opacité d'une « QSGOpacityNode » a changé.
QSGNode::DirtySubtreeBlocked0x0080La sous-arborescence a été bloquée.

Le type DirtyState est un typedef pour QFlags<DirtyStateBit>. Il stocke une combinaison OR de valeurs DirtyStateBit.

Voir aussi QSGNode::markDirty().

enum QSGNode::Flag
flags QSGNode::Flags

L'énumération QSGNode::Flag décrit les indicateurs de la QSGNode

ConstanteValeurDescription
QSGNode::OwnedByParent0x0001Le nœud appartient à son parent et sera supprimé lorsque celui-ci sera supprimé.
QSGNode::UsePreprocess0x0002La fonction virtuelle ` preprocess()` du nœud sera appelée avant le début du rendu.
QSGNode::OwnsGeometry0x00010000Valable uniquement pour QSGGeometryNode et QSGClipNode. Le nœud détient la propriété de l’instance QSGGeometry et la supprimera lorsque le nœud sera détruit ou qu’une géométrie lui sera attribuée.
QSGNode::OwnsMaterial0x00020000Valable uniquement pour QSGGeometryNode. Le nœud détient la propriété du matériau et le supprimera lorsque le nœud sera détruit ou qu’un matériau lui sera attribué.
QSGNode::OwnsOpaqueMaterial0x00040000Valable uniquement pour QSGGeometryNode. Le nœud détient la propriété du matériau opaque et le supprimera lorsque le nœud sera détruit ou qu'un matériau lui sera attribué.
QSGNode::InternalReserved0x01000000Réservé à un usage interne.

Le type Flags est un typedef pour QFlags<Flag>. Il stocke une combinaison OR de valeurs Flag.

enum QSGNode::NodeType

Permet de déterminer le type de nœud.

ConstanteValeurDescription
QSGNode::BasicNodeType0Le type de QSGNode
QSGNode::GeometryNodeType1Le type de QSGGeometryNode
QSGNode::TransformNodeType2Le type de QSGTransformNode
QSGNode::ClipNodeType3Le type de QSGClipNode
QSGNode::OpacityNodeType4Le type de QSGOpacityNode
QSGNode::RenderNodeType6Le type de QSGRenderNode

Voir aussi type().

Documentation sur les fonctions membres

QSGNode::QSGNode()

Crée un nouveau nœud

[virtual noexcept] QSGNode::~QSGNode()

Supprime le nœud.

Chaque enfant de ce nœud pour lequel l'indicateur « QSGNode::OwnedByParent » est activé sera également supprimé.

void QSGNode::appendChildNode(QSGNode *node)

Ajoute node à la liste des enfants de ce nœud.

L'ordre des nœuds est important, car les nœuds de géométrie seront rendus dans l'ordre où ils ont été ajoutés à l'arbre de scène.

QSGNode *QSGNode::childAtIndex(int i) const

Renvoie l'élément enfant situé à l'index i.

Les enfants sont stockés en interne sous la forme d’une liste chaînée ; par conséquent, parcourir les enfants à l’aide de l’index n’est pas la solution la plus efficace.

int QSGNode::childCount() const

Renvoie le nombre de nœuds enfants.

QSGNode *QSGNode::firstChild() const

Renvoie le premier enfant de ce nœud.

Les enfants sont stockés dans une liste chaînée.

QSGNode::Flags QSGNode::flags() const

Renvoie l'ensemble des indicateurs associés à ce nœud.

Voir aussi setFlags().

void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)

Insère node dans la liste des enfants de ce nœud, après le nœud spécifié par after.

L'ordre des nœuds est important, car les nœuds de géométrie seront rendus dans l'ordre où ils ont été ajoutés à l'arbre de scène.

void QSGNode::insertChildNodeBefore(QSGNode *node, QSGNode *before)

Ajoute node à la liste des enfants de ce nœud, avant le nœud spécifié par before.

L'ordre des nœuds est important, car les nœuds de géométrie seront rendus dans l'ordre où ils ont été ajoutés à l'arbre de scène.

[virtual] bool QSGNode::isSubtreeBlocked() const

Indique si ce nœud et son sous-arbre sont disponibles.

Les sous-arborescences bloquées ne verront pas leur état de modification mis à jour et ne seront pas affichées.

La méthode « QSGOpacityNode » renverra par exemple un sous-arbre bloqué lorsque l’opacité cumulée est égale à 0.

QSGNode *QSGNode::lastChild() const

Renvoie le dernier enfant de ce nœud.

Les enfants sont stockés sous la forme d'une liste chaînée.

void QSGNode::markDirty(QSGNode::DirtyState bits)

Informe tous les moteurs de rendu connectés que le nœud contient des données modifiées bits.

QSGNode *QSGNode::nextSibling() const

Renvoie le nœud suivant dans la liste des enfants du nœud parent.

Les enfants sont stockés sous la forme d'une liste chaînée.

QSGNode *QSGNode::parent() const

Renvoie le nœud parent de ce nœud.

void QSGNode::prependChildNode(QSGNode *node)

Ajoute node en tête de la liste des enfants de ce nœud.

L'ordre des nœuds est important, car les nœuds de géométrie seront rendus dans l'ordre où ils ont été ajoutés à l'arbre de scène.

[virtual] void QSGNode::preprocess()

Redéfinissez cette fonction pour effectuer un traitement sur le nœud avant son rendu.

Le prétraitement doit être explicitement activé en définissant l'indicateur ` QSGNode::UsePreprocess`. Cet indicateur doit être défini avant que le nœud ne soit ajouté à l'arbre de scène et entraînera l'appel de la fonction `preprocess()` à chaque image où le nœud est rendu.

Avertissement : veillez à ne pas supprimer de nœuds pendant leur prétraitement. Il est possible, moyennant une légère perte de performances, de supprimer un seul nœud pendant son propre appel de prétraitement. La suppression d'une sous-arborescence contenant des nœuds qui utilisent également le prétraitement peut entraîner une erreur de segmentation. Cette limitation est imposée pour des raisons de performances.

QSGNode *QSGNode::previousSibling() const

Renvoie le nœud qui précède celui-ci dans la liste des enfants du nœud parent.

Les enfants sont stockés sous la forme d'une liste chaînée.

void QSGNode::removeAllChildNodes()

Supprime tous les nœuds enfants de la liste des enfants de ce nœud.

void QSGNode::removeChildNode(QSGNode *node)

Supprime l'node e de la liste des enfants de ce nœud.

void QSGNode::setFlag(QSGNode::Flag f, bool enabled = true)

Active l'indicateur « f » sur ce nœud si la valeur de « enabled » est « true » ; sinon, désactive cet indicateur.

Voir aussi flags().

void QSGNode::setFlags(QSGNode::Flags f, bool enabled = true)

Active les indicateurs « f » sur ce nœud si la valeur de « enabled » est « true » ; sinon, désactive ces indicateurs.

Voir aussi flags().

QSGNode::NodeType QSGNode::type() const

Renvoie le type de ce nœud. Le type du nœud doit être l'un des types prédéfinis dans QSGNode::NodeType et peut être utilisé en toute sécurité pour effectuer un transtypage vers la classe correspondante.

© 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.