En esta página

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

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.

ConstanteValorDescripción
QSGNode::DirtyMatrix0x0100La matriz en QSGTransformNode ha cambiado.
QSGNode::DirtyNodeAdded0x0400Se ha añadido un nodo.
QSGNode::DirtyNodeRemoved0x0800Se ha eliminado un nodo.
QSGNode::DirtyGeometry0x1000La geometría de un QSGGeometryNode ha cambiado.
QSGNode::DirtyMaterial0x2000El material de un QSGGeometryNode ha cambiado.
QSGNode::DirtyOpacity0x4000Se ha modificado la opacidad de un QSGOpacityNode.
QSGNode::DirtySubtreeBlocked0x0080Se 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

ConstanteValorDescripción
QSGNode::OwnedByParent0x0001El nodo es propiedad de su padre y será eliminado cuando el padre sea eliminado.
QSGNode::UsePreprocess0x0002La función virtual preprocess() del nodo será llamada antes de que comience el renderizado.
QSGNode::OwnsGeometry0x00010000Só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::OwnsMaterial0x00020000Só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::OwnsOpaqueMaterial0x00040000Só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::InternalReserved0x01000000Reservado 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.

ConstanteValorDescripción
QSGNode::BasicNodeType0El tipo de QSGNode
QSGNode::GeometryNodeType1El tipo de QSGGeometryNode
QSGNode::TransformNodeType2El tipo de QSGTransformNode
QSGNode::ClipNodeType3El tipo de QSGClipNode
QSGNode::OpacityNodeType4El tipo de QSGOpacityNode
QSGNode::RenderNodeType6El 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.