Sur cette page

QSGNode Class

La classe QSGNode est la classe de base pour tous les nœuds du graphe de scène. Plus d'informations...

En-tête : #include <QSGNode>
CMake : find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake : QT += quick
Héritée 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 d'enfants. Les enfants sont ajoutés à l'aide des commandes appendChildNode(), prependChildNode(), insertChildNodeBefore() et insertChildNodeAfter(). L'ordre des nœuds est important car les nœuds géométriques sont rendus en fonction de leur ordre dans le graphe de la 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. Il s'agit notamment des matrices combinées, de l'opacité accumulée, des modifications apportées à la hiérarchie des nœuds, etc. Ces informations peuvent être utilisées pour optimiser le moteur de rendu du graphe de scène. Pour que le moteur de rendu rende correctement les nœuds, il est important que les utilisateurs appellent QSGNode::markDirty() avec les drapeaux corrects lorsque les nœuds sont modifiés. La plupart des fonctions des classes de nœuds appellent implicitement markDirty(). Par exemple, QSGNode::appendChildNode() appellera markDirty() en passant par QSGNode::DirtyNodeAdded.

Si les nœuds changent à chaque image, la fonction preprocess() peut être utilisée pour appliquer les changements à un nœud pour chaque image rendue. L'utilisation de preprocess() doit être explicitement activée en définissant le drapeau QSGNode::UsePreprocess sur le nœud.

La fonction virtuelle isSubtreeBlocked() peut être utilisée pour désactiver un sous-arbre. Les nœuds d'un sous-arbre bloqué ne seront pas prétraités() et ne seront pas rendus.

Note : Toutes les classes avec le préfixe QSG doivent être utilisées uniquement sur le thread de rendu du graphe de scène. Voir Scene Graph and Rendering pour plus d'informations.

Documentation des types de membres

enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState

Utilisé dans QSGNode::markDirty() pour indiquer comment le graphe de scène a changé.

ConstanteValeurDescription
QSGNode::DirtyMatrix0x0100La matrice d'un site QSGTransformNode a changé.
QSGNode::DirtyNodeAdded0x0400Un nœud a été ajouté.
QSGNode::DirtyNodeRemoved0x0800Un nœud a été supprimé.
QSGNode::DirtyGeometry0x1000La géométrie d'un site QSGGeometryNode a changé.
QSGNode::DirtyMaterial0x2000Le matériau d'un site QSGGeometryNode a changé.
QSGNode::DirtyOpacity0x4000L'opacité d'un site QSGOpacityNode a changé.
QSGNode::DirtySubtreeBlocked0x0080Le sous-arbre a été bloqué.

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

Voir aussi QSGNode::markDirty().

enum QSGNode::Flag
flags QSGNode::Flags

L'enum QSGNode::Flag décrit les drapeaux de l'enum QSGNode::Flag. QSGNode

ConstanteValeurDescription
QSGNode::OwnedByParent0x0001Le noeud appartient à son parent et sera supprimé lorsque le parent sera supprimé.
QSGNode::UsePreprocess0x0002La fonction virtuelle preprocess() du noeud sera appelée avant le début du rendu.
QSGNode::OwnsGeometry0x00010000Valable uniquement pour QSGGeometryNode et QSGClipNode. Le nœud est propriétaire de l'instance QSGGeometry et la supprimera lorsque le nœud sera détruit ou qu'une géométrie sera attribuée.
QSGNode::OwnsMaterial0x00020000Valable uniquement pour QSGGeometryNode. Le nœud est propriétaire du matériau et le supprimera lorsque le nœud sera détruit ou qu'un matériau sera attribué.
QSGNode::OwnsOpaqueMaterial0x00040000Valable uniquement pour QSGGeometryNode. Le nœud est propriétaire 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 OU de valeurs de drapeaux.

enum QSGNode::NodeType

Peut être utilisé pour déterminer le type de nœud.

ConstanteValeurDescription du nœud
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 également type().

Documentation sur les fonctions membres

QSGNode::QSGNode()

Construit un nouveau nœud

[virtual noexcept] QSGNode::~QSGNode()

Détruit le noeud.

Tous les enfants de ce nœud dont l'indicateur QSGNode::OwnedByParent est activé seront également supprimés.

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 géométriques seront rendus dans l'ordre dans lequel ils sont ajoutés au graphe de la scène.

QSGNode *QSGNode::childAtIndex(int i) const

Renvoie l'enfant à l'index i.

Les enfants sont stockés en interne sous la forme d'une liste chaînée, de sorte que l'itération sur les enfants via l'index est sous-optimale.

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 drapeaux de 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 géométriques seront rendus dans l'ordre dans lequel ils sont ajoutés au graphe de la scène.

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

Insère node dans 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 géométriques seront rendus dans l'ordre dans lequel ils sont ajoutés au graphe de la scène.

[virtual] bool QSGNode::isSubtreeBlocked() const

Indique si ce nœud et sa sous-arborescence peuvent être utilisés.

Les sous-arbres bloqués ne seront pas mis à jour et ne seront pas rendus.

Le site QSGOpacityNode renvoie une sous-arborescence bloquée lorsque l'opacité accumulée est de 0, par exemple.

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)

Notifie à tous les moteurs de rendu connectés que le nœud est sale bits.

QSGNode *QSGNode::nextSibling() const

Renvoie le nœud suivant dans la liste des enfants du 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 à la liste des enfants de ce nœud.

L'ordre des nœuds est important car les nœuds géométriques seront rendus dans l'ordre dans lequel ils sont ajoutés au graphe de la scène.

[virtual] void QSGNode::preprocess()

Surchargez cette fonction pour effectuer un traitement sur le nœud avant qu'il ne soit rendu.

Le prétraitement doit être explicitement activé en définissant le drapeau QSGNode::UsePreprocess. L'indicateur doit être activé avant que le nœud ne soit ajouté au graphe de la scène et entraînera l'appel de la fonction preprocess() à chaque image du nœud.

Attention : Attention à ne pas supprimer des nœuds pendant qu'ils sont en cours de prétraitement. Il est possible, avec un léger impact sur les performances, de supprimer un seul nœud pendant son propre appel à la fonction preprocess. La suppression d'un sous-arbre contenant des nœuds qui utilisent également le prétraitement peut entraîner une erreur de segmentation. Ceci est fait pour des raisons de performance.

QSGNode *QSGNode::previousSibling() const

Renvoie le nœud précédant celui-ci dans la liste des enfants du 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 node de la liste des enfants de ce nœud.

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

Définit l'indicateur f sur ce nœud si enabled est vrai ; sinon, efface l'indicateur.

Voir aussi flags().

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

Définit les drapeaux f sur ce nœud si enabled est vrai ; sinon, efface les drapeaux.

Voir aussi flags().

QSGNode::NodeType QSGNode::type() const

Renvoie le type de ce nœud. Le type de nœud doit être l'un des types prédéfinis définis dans QSGNode::NodeType et peut être utilisé en toute sécurité pour convertir 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.