このページでは

QSGNode Class

QSGNode クラスは、シーングラフ内のすべてのノードの基底クラスです。詳細...

ヘッダー: #include <QSGNode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
継承元:

QSGBasicGeometryNode、QSGOpacityNode 、QSGRenderNode 、およびQSGTransformNode

パブリック型

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 }

パブリック関数

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

詳細な説明

QSGNode クラスは、子コンテナとして使用できます。子は、appendChildNode()、prependChildNode()、insertChildNodeBefore()、およびinsertChildNodeAfter() を使用して追加されます。ジオメトリ ノードはシーングラフ内の順序に従ってレンダリングされるため、ノードの順序は重要です。

シーングラフノードには、シーンのどの部分が変更されたかを記述する仕組みが組み込まれています。これには、合成行列、蓄積された不透明度、ノード階層の変更などが含まれます。この情報は、シーングラフレンダラー内部での最適化に利用できます。 レンダラーがノードを適切にレンダリングするためには、ノードが変更された際に、ユーザーが正しいフラグを指定してQSGNode::markDirty()を呼び出すことが重要です。ノードクラスの関数のほとんどは、暗黙的にmarkDirty()を呼び出します。例えば、QSGNode::appendChildNode()は、QSGNode::DirtyNodeAdded を引数としてmarkDirty()を呼び出します。

ノードが毎フレーム変更される場合、preprocess() 関数を使用することで、ノードがレンダリングされる毎フレームに変更を適用できます。preprocess() の使用は、ノードのQSGNode::UsePreprocess フラグを設定することで明示的に有効にする必要があります。

仮想関数isSubtreeBlocked() を使用すると、サブツリー全体を無効にすることができます。ブロックされたサブツリー内のノードは preprocess() されず、レンダリングもされません。

注: QSGという接頭辞を持つすべてのクラスは 、シーングラフのレンダリングスレッドでのみ使用する必要があります。詳細については、「シーングラフとレンダリング」を参照してください。

メンバ型のドキュメント

enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState

QSGNode::markDirty() で、シーングラフがどのように変化したかを示すために使用されます。

定数値説明
QSGNode::DirtyMatrix0x0100QSGTransformNode 内の行列が変更されました。
QSGNode::DirtyNodeAdded0x0400ノードが追加されました。
QSGNode::DirtyNodeRemoved0x0800ノードが削除されました。
QSGNode::DirtyGeometry0x1000QSGGeometryNode のジオメトリが変更されました。 のマテリアルが変更されました。
QSGNode::DirtyMaterial0x2000QSGGeometryNode のマテリアルが変更されました。
QSGNode::DirtyOpacity0x4000QSGOpacityNode の不透明度が変更されました。
QSGNode::DirtySubtreeBlocked0x0080サブツリーがブロックされました。

DirtyState 型は、QFlags<DirtyStateBit> の typedef です。これは、DirtyStateBit 値の論理和 (OR) を格納します。

QSGNode::markDirty()も参照してください 。

enum QSGNode::Flag
flags QSGNode::Flags

QSGNode::Flag 列挙型は、QSGNode

定数値説明
QSGNode::OwnedByParent0x0001このノードは親ノードによって所有されており、親ノードが削除されると、このノードも削除されます。
QSGNode::UsePreprocess0x0002レンダリングが開始される前に、ノードの仮想関数preprocess()が呼び出されます。
QSGNode::OwnsGeometry0x00010000QSGGeometryNode およびQSGClipNode でのみ有効です。このノードはQSGGeometry インスタンスを所有しており、ノードが破棄されたり、ジオメトリが割り当てられたりすると、それを削除します。
QSGNode::OwnsMaterial0x00020000QSGGeometryNode でのみ有効です。ノードはマテリアルの所有権を持ち、ノードが破棄されたとき、またはマテリアルが割り当てられたときにそれを削除します。
QSGNode::OwnsOpaqueMaterial0x00040000QSGGeometryNode でのみ有効です。このノードは不透明マテリアルの所有権を持ち、ノードが破棄されたとき、またはマテリアルが割り当てられたときにそれを削除します。
QSGNode::InternalReserved0x01000000内部使用のために予約されています。

Flags 型は、QFlags<Flag> の typedef です。Flag 値の OR 組み合わせを格納します。

enum QSGNode::NodeType

ノードのタイプを特定するために使用できます。

定数値説明
QSGNode::BasicNodeType0ノードのタイプQSGNode
QSGNode::GeometryNodeType1の型QSGGeometryNode
QSGNode::TransformNodeType2の型QSGTransformNode
QSGNode::ClipNodeType3のタイプQSGClipNode
QSGNode::OpacityNodeType4その種類はQSGOpacityNode
QSGNode::RenderNodeType6タイプはQSGRenderNode

関連項目: type()。

メンバ関数のドキュメント

QSGNode::QSGNode()

新しいノードを作成します

[virtual noexcept] QSGNode::~QSGNode()

ノードを削除します。

このノードの子ノードのうち、フラグ「QSGNode::OwnedByParent 」が設定されているものはすべて、同様に削除されます。

void QSGNode::appendChildNode(QSGNode *node)

このノードの子ノードのリストに「node 」を追加します。

ジオメトリノードはシーングラフに追加された順序でレンダリングされるため、ノードの順序は重要です。

QSGNode *QSGNode::childAtIndex(int i) const

インデックスi の位置にある子ノードを返します。

子ノードは内部で連結リストとして格納されているため、インデックスを介して子ノードを反復処理するのは非効率的です。

int QSGNode::childCount() const

子ノードの数を返します。

QSGNode *QSGNode::firstChild() const

このノードの最初の子ノードを返します。

子ノードは連結リストに格納されています。

QSGNode::Flags QSGNode::flags() const

このノードのフラグのセットを返します。

setFlags()も参照してください 。

void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)

after で指定されたノードの後に、node をこのノードの子ノードリストに挿入します。

ジオメトリノードはシーングラフに追加された順序でレンダリングされるため、ノードの順序は重要です。

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

このノードの子ノードリストに、`node ` を、`before` で指定されたノードの直前に挿入します。

ジオメトリノードはシーングラフに追加された順序でレンダリングされるため、ノードの順序は重要です。

[virtual] bool QSGNode::isSubtreeBlocked() const

このノードとそのサブツリーが使用可能かどうかを返します。

ブロックされたサブツリーは、変更状態が更新されず、レンダリングもされません。

たとえば、QSGOpacityNode は、累積不透明度が0の場合、ブロックされたサブツリーを返します。

QSGNode *QSGNode::lastChild() const

このノードの最後の子ノードを返します。

子ノードは連結リストとして格納されています。

void QSGNode::markDirty(QSGNode::DirtyState bits)

そのノードのbits が変更されたことを、接続されているすべてのレンダラーに通知します。

QSGNode *QSGNode::nextSibling() const

親ノードの子ノードリストの中で、このノードの次にくるノードを返します。

子ノードは連結リストとして格納されています。

QSGNode *QSGNode::parent() const

このノードの親ノードを返します。

void QSGNode::prependChildNode(QSGNode *node)

このノードの子ノードのリストの先頭に「node 」を追加します。

ジオメトリノードはシーングラフに追加された順序でレンダリングされるため、ノードの順序は重要です。

[virtual] void QSGNode::preprocess()

この関数をオーバーライドすると、ノードがレンダリングされる前に処理を実行できます。

プリプロセッシングを有効にするには、フラグ `QSGNode::UsePreprocess` を明示的に設定する必要があります。このフラグは、ノードがシーングラフに追加される前に設定する必要があり、設定されると、ノードがレンダリングされるすべてのフレームで `preprocess()` 関数が呼び出されます。

警告: ノードがプリプロセス処理中の削除には注意してください 。パフォーマンスがわずかに低下しますが、自身のpreprocess呼び出し中に単一のノードを削除することは可能です。ただし、プリプロセス処理を使用しているノードを含むサブツリーを削除すると、セグメンテーションフォールトが発生する可能性があります。これはパフォーマンス上の理由によるものです。

QSGNode *QSGNode::previousSibling() const

親ノードの子ノードリストの中で、このノードの直前にあるノードを返します。

子ノードは連結リストとして格納されています。

void QSGNode::removeAllChildNodes()

このノードの子ノードリストから、すべての子ノードを削除します。

void QSGNode::removeChildNode(QSGNode *node)

このノードの子ノードのリストから「node 」を削除します。

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

enabled がtrueの場合、このノードのf フラグを設定します。そうでない場合は、そのフラグをクリアします。

flags()も参照してください 。

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

enabled がtrueの場合、このノードのフラグf を設定します。そうでない場合は、フラグをクリアします。

flags()も参照してください 。

QSGNode::NodeType QSGNode::type() const

このノードの型を返します。ノードの型は、QSGNode::NodeType で定義されている事前定義された型のいずれかでなければならず、対応するクラスへのキャストに安全に使用できます。

© 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.