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 |
- Liste de tous les membres, y compris les membres hérités
- QSGNode fait partie des classes de nœuds de graphe de scène d'Qt Quick .
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é.
| Constante | Valeur | Description |
|---|---|---|
QSGNode::DirtyMatrix | 0x0100 | La matrice d'une fonction « QSGTransformNode » a changé. |
QSGNode::DirtyNodeAdded | 0x0400 | Un nœud a été ajouté. |
QSGNode::DirtyNodeRemoved | 0x0800 | Un nœud a été supprimé. |
QSGNode::DirtyGeometry | 0x1000 | La géométrie d'une « QSGGeometryNode » a changé. |
QSGNode::DirtyMaterial | 0x2000 | Le matériau d'un « QSGGeometryNode » a changé. |
QSGNode::DirtyOpacity | 0x4000 | L'opacité d'une « QSGOpacityNode » a changé. |
QSGNode::DirtySubtreeBlocked | 0x0080 | La 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
| Constante | Valeur | Description |
|---|---|---|
QSGNode::OwnedByParent | 0x0001 | Le nœud appartient à son parent et sera supprimé lorsque celui-ci sera supprimé. |
QSGNode::UsePreprocess | 0x0002 | La fonction virtuelle ` preprocess()` du nœud sera appelée avant le début du rendu. |
QSGNode::OwnsGeometry | 0x00010000 | Valable 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::OwnsMaterial | 0x00020000 | Valable 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::OwnsOpaqueMaterial | 0x00040000 | Valable 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::InternalReserved | 0x01000000 | Ré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.
| Constante | Valeur | Description |
|---|---|---|
QSGNode::BasicNodeType | 0 | Le type de QSGNode |
QSGNode::GeometryNodeType | 1 | Le type de QSGGeometryNode |
QSGNode::TransformNodeType | 2 | Le type de QSGTransformNode |
QSGNode::ClipNodeType | 3 | Le type de QSGClipNode |
QSGNode::OpacityNodeType | 4 | Le type de QSGOpacityNode |
QSGNode::RenderNodeType | 6 | Le 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.