QSGNode Class
Die Klasse QSGNode ist die Basisklasse für alle Knoten im Szenegraph. Mehr...
Kopfzeile: | #include <QSGNode> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake: | QT += quick |
Vererbt von: | QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode, und QSGTransformNode |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSGNode ist Teil der Qt Quick Scene Graph Node Klassen.
Öffentliche Typen
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 } |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
Die Klasse QSGNode kann als Child-Container verwendet werden. Kinder werden mit den Funktionen appendChildNode(), prependChildNode(), insertChildNodeBefore() und insertChildNodeAfter() hinzugefügt. Die Reihenfolge der Knoten ist wichtig, da die Geometrieknoten entsprechend ihrer Reihenfolge im Szenegraph gerendert werden.
Die Knoten des Szenegraphen enthalten einen Mechanismus, der beschreibt, welche Teile der Szene sich geändert haben. Dazu gehören die kombinierten Matrizen, die akkumulierte Deckkraft, Änderungen in der Knotenhierarchie usw. Diese Informationen können für Optimierungen innerhalb des Szenengraphen-Renderers verwendet werden. Damit der Renderer die Knoten richtig darstellen kann, ist es wichtig, dass die Benutzer QSGNode::markDirty() mit den richtigen Flags aufrufen, wenn Knoten geändert werden. Die meisten der Funktionen der Knotenklassen rufen implizit markDirty() auf. Zum Beispiel ruft QSGNode::appendChildNode() markDirty() mit der Übergabe von QSGNode::DirtyNodeAdded auf.
Wenn sich Knoten bei jedem Frame ändern, kann die Funktion preprocess() verwendet werden, um Änderungen an einem Knoten für jeden Frame, der gerendert wird, vorzunehmen. Die Verwendung von preprocess() muss explizit durch Setzen des QSGNode::UsePreprocess Flags auf dem Knoten aktiviert werden.
Die virtuelle Funktion isSubtreeBlocked() kann verwendet werden, um einen Teilbaum vollständig zu sperren. Knoten in einem blockierten Teilbaum werden nicht vorverarbeitet() und nicht gerendert.
Hinweis: Alle Klassen mit QSG-Präfix sollten nur im Rendering-Thread des Szenegraphs verwendet werden. Siehe Scene Graph und Rendering für weitere Informationen.
Dokumentation der Mitgliedstypen
enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState
Wird in QSGNode::markDirty() verwendet, um anzuzeigen, wie sich der Szenegraph verändert hat.
Konstante | Wert | Beschreibung |
---|---|---|
QSGNode::DirtyMatrix | 0x0100 | Die Matrix in einer QSGTransformNode hat sich geändert. |
QSGNode::DirtyNodeAdded | 0x0400 | Ein Knoten wurde hinzugefügt. |
QSGNode::DirtyNodeRemoved | 0x0800 | Ein Knoten wurde entfernt. |
QSGNode::DirtyGeometry | 0x1000 | Die Geometrie eines QSGGeometryNode hat sich geändert. |
QSGNode::DirtyMaterial | 0x2000 | Das Material einer QSGGeometryNode hat sich geändert. |
QSGNode::DirtyOpacity | 0x4000 | Die Deckkraft eines QSGOpacityNode hat sich geändert. |
QSGNode::DirtySubtreeBlocked | 0x0080 | Der Teilbaum wurde blockiert. |
Der Typ DirtyState ist ein Typedef für QFlags<DirtyStateBit>. Er speichert eine ODER-Kombination von DirtyStateBit-Werten.
Siehe auch QSGNode::markDirty().
enum QSGNode::Flag
flags QSGNode::Flags
Das Enum QSGNode::Flag beschreibt die Flags der QSGNode
Konstante | Wert | Beschreibung |
---|---|---|
QSGNode::OwnedByParent | 0x0001 | Der Knoten ist im Besitz seines Elternteils und wird gelöscht, wenn der Elternteil gelöscht wird. |
QSGNode::UsePreprocess | 0x0002 | Die virtuelle Funktion preprocess() des Knotens wird aufgerufen, bevor das Rendern beginnt. |
QSGNode::OwnsGeometry | 0x00010000 | Nur gültig für QSGGeometryNode und QSGClipNode. Der Knoten ist Eigentümer der Instanz QSGGeometry und wird gelöscht, wenn der Knoten zerstört wird oder eine Geometrie zugewiesen wird. |
QSGNode::OwnsMaterial | 0x00020000 | Gilt nur für QSGGeometryNode. Der Knoten ist Eigentümer des Materials und löscht es, wenn der Knoten zerstört oder ein Material zugewiesen wird. |
QSGNode::OwnsOpaqueMaterial | 0x00040000 | Gilt nur für QSGGeometryNode. Der Knoten ist Eigentümer des opaken Materials und löscht es, wenn der Knoten zerstört oder ein Material zugewiesen wird. |
QSGNode::InternalReserved | 0x01000000 | Reserviert für interne Zwecke. |
Der Typ Flags ist ein Typedef für QFlags<Flag>. Er speichert eine ODER-Kombination von Flag-Werten.
enum QSGNode::NodeType
Kann verwendet werden, um den Typ des Knotens herauszufinden.
Konstante | Wert | Beschreibung |
---|---|---|
QSGNode::BasicNodeType | 0 | Der Typ von QSGNode |
QSGNode::GeometryNodeType | 1 | Der Typ von QSGGeometryNode |
QSGNode::TransformNodeType | 2 | Der Typ von QSGTransformNode |
QSGNode::ClipNodeType | 3 | Der Typ von QSGClipNode |
QSGNode::OpacityNodeType | 4 | Der Typ von QSGOpacityNode |
QSGNode::RenderNodeType | 6 | Der Typ von QSGRenderNode |
Siehe auch type().
Dokumentation der Mitgliedsfunktionen
QSGNode::QSGNode()
Konstruiert einen neuen Knoten
[virtual noexcept]
QSGNode::~QSGNode()
Zerstört den Knoten.
Jedes Kind dieses Knotens, bei dem das Flag QSGNode::OwnedByParent gesetzt ist, wird ebenfalls gelöscht.
void QSGNode::appendChildNode(QSGNode *node)
Hängt node an die Liste der Kinder dieses Knotens an.
Die Reihenfolge der Knoten ist wichtig, da die Geometrieknoten in der Reihenfolge gerendert werden, in der sie dem Szenengraph hinzugefügt werden.
QSGNode *QSGNode::childAtIndex(int i) const
Gibt das Kind mit dem Index i zurück.
Untergeordnete Elemente werden intern als verknüpfte Liste gespeichert, so dass die Iteration über die untergeordneten Elemente über den Index suboptimal ist.
int QSGNode::childCount() const
Gibt die Anzahl der Kindknoten zurück.
QSGNode *QSGNode::firstChild() const
Gibt das erste Kind dieses Knotens zurück.
Die Kinder werden in einer verknüpften Liste gespeichert.
QSGNode::Flags QSGNode::flags() const
Gibt die Menge der Flaggen für diesen Knoten zurück.
Siehe auch setFlags().
void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)
Fügt node in die Liste der Kinder dieses Knotens nach dem mit after angegebenen Knoten ein.
Die Reihenfolge der Knoten ist wichtig, da die Geometrieknoten in der Reihenfolge gerendert werden, in der sie dem Szenengraph hinzugefügt werden.
void QSGNode::insertChildNodeBefore(QSGNode *node, QSGNode *before)
Fügt node in die Liste der Kinder dieses Knotens vor dem mit before angegebenen Knoten ein.
Die Reihenfolge der Knoten ist wichtig, da die Geometrieknoten in der Reihenfolge gerendert werden, in der sie dem Szenengraph hinzugefügt werden.
[virtual]
bool QSGNode::isSubtreeBlocked() const
Gibt zurück, ob dieser Knoten und sein Teilbaum für die Verwendung verfügbar sind.
Bei blockierten Teilbäumen wird der Dirty-Status nicht aktualisiert und sie werden nicht gerendert.
QSGOpacityNode gibt einen blockierten Teilbaum zurück, wenn die akkumulierte Opazität z. B. 0 ist.
QSGNode *QSGNode::lastChild() const
Gibt das letzte Kind dieses Knotens zurück.
Die Kinder werden als verknüpfte Liste gespeichert.
void QSGNode::markDirty(QSGNode::DirtyState bits)
Benachrichtigt alle angeschlossenen Renderer, dass der Knoten schmutzig ist bits.
QSGNode *QSGNode::nextSibling() const
Gibt den Knoten zurück, der in der Liste der Kinder des Elternteils auf diesen folgt.
Die Kinder werden als verknüpfte Liste gespeichert.
QSGNode *QSGNode::parent() const
Gibt den übergeordneten Knoten dieses Knotens zurück.
void QSGNode::prependChildNode(QSGNode *node)
Stellt node der Liste der Kinder dieses Knotens voran.
Die Reihenfolge der Knoten ist wichtig, da die Geometrieknoten in der Reihenfolge gerendert werden, in der sie dem Szenengraph hinzugefügt werden.
[virtual]
void QSGNode::preprocess()
Überschreiben Sie diese Funktion, um den Knoten zu verarbeiten, bevor er gerendert wird.
Die Vorverarbeitung muss explizit durch Setzen des Flags QSGNode::UsePreprocess aktiviert werden. Das Flag muss gesetzt werden, bevor der Knoten zum Szenengraph hinzugefügt wird, und führt dazu, dass die Funktion preprocess() für jedes Bild, in dem der Knoten gerendert wird, aufgerufen wird.
Warnung: Hüten Sie sich davor, Knoten zu löschen, während sie vorverarbeitet werden. Es ist möglich, einen einzelnen Knoten während seines eigenen Preprocess-Aufrufs zu löschen, allerdings mit einem kleinen Leistungseinbruch. Das Löschen eines Teilbaums mit Knoten, die ebenfalls vorverarbeitet werden, kann zu einem Segmentierungsfehler führen. Dies geschieht aus Leistungsgründen.
QSGNode *QSGNode::previousSibling() const
Gibt den Knoten vor diesem in der Liste der Kinder des Elternteils zurück.
Die Kinder werden in einer verknüpften Liste gespeichert.
void QSGNode::removeAllChildNodes()
Entfernt alle Kindknoten aus der Liste der Kinder dieses Knotens.
void QSGNode::removeChildNode(QSGNode *node)
Entfernt node aus der Liste der Kinder dieses Knotens.
void QSGNode::setFlag(QSGNode::Flag f, bool enabled = true)
Setzt das Kennzeichen f an diesem Knoten, wenn enabled wahr ist; andernfalls wird das Kennzeichen gelöscht.
Siehe auch flags().
void QSGNode::setFlags(QSGNode::Flags f, bool enabled = true)
Setzt die Flags f auf diesem Knoten, wenn enabled wahr ist; andernfalls werden die Flags gelöscht.
Siehe auch flags().
QSGNode::NodeType QSGNode::type() const
Gibt den Typ dieses Knotens zurück. Der Knotentyp muss einer der vordefinierten Typen sein, die in QSGNode::NodeType definiert sind, und kann sicher zum Casting auf die entsprechende Klasse verwendet werden.
© 2025 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.