QSGNode Class
La clase QSGNode es la clase base para todos los nodos del grafo de escena. Más...
| Cabecera: | #include <QSGNode> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick)target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake: | QT += quick |
| Heredado por: | QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode, y QSGTransformNode |
- Lista de todos los miembros, incluyendo los heredados
- QSGNode es parte de las clasesQt Quick Scene Graph Node.
Tipos Públicos
| 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 } |
Funciones Públicas
| 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 |
Descripción Detallada
La clase QSGNode puede ser utilizada como contenedor de hijos. Los hijos se añaden con las funciones appendChildNode(), prependChildNode(), insertChildNodeBefore() y insertChildNodeAfter(). El orden de los nodos es importante ya que los nodos de geometría se renderizan según su orden en el gráfico de escena.
Los nodos del gráfico de escena contienen un mecanismo que describe qué partes de la escena han cambiado. Esto incluye las matrices combinadas, la opacidad acumulada, los cambios en la jerarquía de nodos, etc. Esta información puede ser utilizada para optimizaciones dentro del renderizador del gráfico de escena. Para que el renderizador renderice correctamente los nodos, es importante que los usuarios llamen a QSGNode::markDirty() con las banderas correctas cuando se cambien los nodos. La mayoría de las funciones de las clases de nodos llamarán implícitamente a markDirty(). Por ejemplo, QSGNode::appendChildNode() llamará a markDirty() pasando QSGNode::DirtyNodeAdded.
Si los nodos cambian cada fotograma, se puede utilizar la función preprocess() para aplicar cambios a un nodo en cada fotograma que se renderice. El uso de preprocess() debe habilitarse explícitamente estableciendo la bandera QSGNode::UsePreprocess en el nodo.
La función virtual isSubtreeBlocked() puede utilizarse para desactivar un subárbol. Los nodos en un subárbol bloqueado no serán preprocesados() y no se renderizarán.
Nota: Todas las clases con el prefijo QSG deben utilizarse únicamente en el subproceso de renderizado del gráfico de escena. Ver Gráfico de Escena y Renderizado para más información.
Documentación de tipos de miembros
enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState
Utilizado en QSGNode::markDirty() para indicar cómo ha cambiado el gráfico de escena.
| Constante | Valor | Descripción |
|---|---|---|
QSGNode::DirtyMatrix | 0x0100 | La matriz en QSGTransformNode ha cambiado. |
QSGNode::DirtyNodeAdded | 0x0400 | Se ha añadido un nodo. |
QSGNode::DirtyNodeRemoved | 0x0800 | Se ha eliminado un nodo. |
QSGNode::DirtyGeometry | 0x1000 | La geometría de un QSGGeometryNode ha cambiado. |
QSGNode::DirtyMaterial | 0x2000 | El material de un QSGGeometryNode ha cambiado. |
QSGNode::DirtyOpacity | 0x4000 | Se ha modificado la opacidad de un QSGOpacityNode. |
QSGNode::DirtySubtreeBlocked | 0x0080 | Se ha bloqueado el subárbol. |
El tipo DirtyState es un typedef para QFlags<DirtyStateBit>. Almacena una combinación OR de valores DirtyStateBit.
Véase también QSGNode::markDirty().
enum QSGNode::Flag
flags QSGNode::Flags
El enum QSGNode::Flag describe las banderas de la variable QSGNode
| Constante | Valor | Descripción |
|---|---|---|
QSGNode::OwnedByParent | 0x0001 | El nodo es propiedad de su padre y será eliminado cuando el padre sea eliminado. |
QSGNode::UsePreprocess | 0x0002 | La función virtual preprocess() del nodo será llamada antes de que comience el renderizado. |
QSGNode::OwnsGeometry | 0x00010000 | Sólo válido para QSGGeometryNode y QSGClipNode. El nodo tiene propiedad sobre la instancia QSGGeometry y la borrará cuando se destruya el nodo o se asigne una geometría. |
QSGNode::OwnsMaterial | 0x00020000 | Sólo válido para QSGGeometryNode. El nodo es propietario del material y lo eliminará cuando se destruya el nodo o se asigne un material. |
QSGNode::OwnsOpaqueMaterial | 0x00040000 | Sólo válido para QSGGeometryNode. El nodo tiene propiedad sobre el material opaco y lo borrará cuando el nodo se destruya o se asigne un material. |
QSGNode::InternalReserved | 0x01000000 | Reservado para uso interno. |
El tipo Flags es un typedef para QFlags<Flag>. Almacena una combinación OR de valores Flag.
enum QSGNode::NodeType
Puede utilizarse para averiguar el tipo de nodo.
| Constante | Valor | Descripción |
|---|---|---|
QSGNode::BasicNodeType | 0 | El tipo de QSGNode |
QSGNode::GeometryNodeType | 1 | El tipo de QSGGeometryNode |
QSGNode::TransformNodeType | 2 | El tipo de QSGTransformNode |
QSGNode::ClipNodeType | 3 | El tipo de QSGClipNode |
QSGNode::OpacityNodeType | 4 | El tipo de QSGOpacityNode |
QSGNode::RenderNodeType | 6 | El tipo de QSGRenderNode |
Véase también type().
Documentación de funciones miembro
QSGNode::QSGNode()
Construye un nuevo nodo
[virtual noexcept] QSGNode::~QSGNode()
Destruye el nodo.
Todos los hijos de este nodo que tengan la bandera QSGNode::OwnedByParent activada, también serán eliminados.
void QSGNode::appendChildNode(QSGNode *node)
Añade node a la lista de hijos de este nodo.
El orden de los nodos es importante, ya que los nodos de geometría se renderizarán en el orden en que se añadan al gráfico de escena.
QSGNode *QSGNode::childAtIndex(int i) const
Devuelve el hijo en el índice i.
Los hijos se almacenan internamente como una lista enlazada, por lo que iterar sobre los hijos a través del índice es subóptimo.
int QSGNode::childCount() const
Devuelve el número de nodos hijos.
QSGNode *QSGNode::firstChild() const
Devuelve el primer hijo de este nodo.
Los hijos se almacenan en una lista enlazada.
QSGNode::Flags QSGNode::flags() const
Devuelve el conjunto de banderas de este nodo.
Véase también setFlags().
void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)
Inserta node en la lista de hijos de este nodo después del nodo especificado con after.
El orden de los nodos es importante ya que los nodos de geometría se renderizarán en el orden en que se añadan al gráfico de escena.
void QSGNode::insertChildNodeBefore(QSGNode *node, QSGNode *before)
Inserta node en la lista de hijos de este nodo antes del nodo especificado con before.
El orden de los nodos es importante, ya que los nodos de geometría se renderizarán en el orden en que se añadan al gráfico de escena.
[virtual] bool QSGNode::isSubtreeBlocked() const
Devuelve si este nodo y su subárbol están disponibles para su uso.
Los subárboles bloqueados no tendrán sus estados sucios actualizados y no serán renderizados.
QSGOpacityNode devolverá un subárbol bloqueado cuando la opacidad acumulada sea 0, por ejemplo.
QSGNode *QSGNode::lastChild() const
Devuelve el último hijo de este nodo.
Los hijos se almacenan como una lista enlazada.
void QSGNode::markDirty(QSGNode::DirtyState bits)
Notifica a todos los renderizadores conectados que el nodo tiene sucio bits.
QSGNode *QSGNode::nextSibling() const
Devuelve el nodo que sigue a este en la lista de hijos del padre.
Los hijos se almacenan como una lista enlazada.
QSGNode *QSGNode::parent() const
Devuelve el nodo padre de este nodo.
void QSGNode::prependChildNode(QSGNode *node)
Añade node a la lista de hijos de este nodo.
El orden de los nodos es importante, ya que los nodos geométricos se renderizarán en el orden en que se añadan al gráfico de la escena.
[virtual] void QSGNode::preprocess()
Sobreescriba esta función para procesar el nodo antes de que sea renderizado.
El preprocesamiento debe ser explícitamente habilitado mediante el establecimiento de la bandera QSGNode::UsePreprocess. La bandera debe ser activada antes de que el nodo sea añadido al gráfico de la escena y hará que la función preprocess() sea llamada en cada fotograma en el que el nodo sea renderizado.
Advertencia: Cuidado con borrar nodos mientras están siendo preprocesados. Es posible, con un pequeño impacto en el rendimiento, borrar un único nodo durante su propia llamada a preprocess(). Borrar un subárbol que tiene nodos que también utilizan el preprocesamiento puede provocar un fallo de segmentación. Esto se hace por razones de rendimiento.
QSGNode *QSGNode::previousSibling() const
Devuelve el nodo anterior a éste en la lista de hijos del padre.
Los hijos se almacenan como una lista enlazada.
void QSGNode::removeAllChildNodes()
Elimina todos los nodos hijos de la lista de hijos de este nodo.
void QSGNode::removeChildNode(QSGNode *node)
Elimina node de la lista de hijos de este nodo.
void QSGNode::setFlag(QSGNode::Flag f, bool enabled = true)
Establece el indicador f en este nodo si enabled es verdadero; en caso contrario, borra el indicador.
Véase también flags().
void QSGNode::setFlags(QSGNode::Flags f, bool enabled = true)
Establece las banderas f en este nodo si enabled es verdadero; en caso contrario borra las banderas.
Véase también flags().
QSGNode::NodeType QSGNode::type() const
Devuelve el tipo de este nodo. El tipo de nodo debe ser uno de los tipos predefinidos definidos en QSGNode::NodeType y se puede utilizar con seguridad para hacer un casting a la clase correspondiente.
© 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.