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 |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QSGNodeは、Qt Quick のシーングラフノードクラスの一部です。
パブリック型
| 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::DirtyMatrix | 0x0100 | QSGTransformNode 内の行列が変更されました。 |
QSGNode::DirtyNodeAdded | 0x0400 | ノードが追加されました。 |
QSGNode::DirtyNodeRemoved | 0x0800 | ノードが削除されました。 |
QSGNode::DirtyGeometry | 0x1000 | QSGGeometryNode のジオメトリが変更されました。 のマテリアルが変更されました。 |
QSGNode::DirtyMaterial | 0x2000 | QSGGeometryNode のマテリアルが変更されました。 |
QSGNode::DirtyOpacity | 0x4000 | QSGOpacityNode の不透明度が変更されました。 |
QSGNode::DirtySubtreeBlocked | 0x0080 | サブツリーがブロックされました。 |
DirtyState 型は、QFlags<DirtyStateBit> の typedef です。これは、DirtyStateBit 値の論理和 (OR) を格納します。
QSGNode::markDirty()も参照してください 。
enum QSGNode::Flag
flags QSGNode::Flags
QSGNode::Flag 列挙型は、QSGNode
| 定数 | 値 | 説明 |
|---|---|---|
QSGNode::OwnedByParent | 0x0001 | このノードは親ノードによって所有されており、親ノードが削除されると、このノードも削除されます。 |
QSGNode::UsePreprocess | 0x0002 | レンダリングが開始される前に、ノードの仮想関数preprocess()が呼び出されます。 |
QSGNode::OwnsGeometry | 0x00010000 | QSGGeometryNode およびQSGClipNode でのみ有効です。このノードはQSGGeometry インスタンスを所有しており、ノードが破棄されたり、ジオメトリが割り当てられたりすると、それを削除します。 |
QSGNode::OwnsMaterial | 0x00020000 | QSGGeometryNode でのみ有効です。ノードはマテリアルの所有権を持ち、ノードが破棄されたとき、またはマテリアルが割り当てられたときにそれを削除します。 |
QSGNode::OwnsOpaqueMaterial | 0x00040000 | QSGGeometryNode でのみ有効です。このノードは不透明マテリアルの所有権を持ち、ノードが破棄されたとき、またはマテリアルが割り当てられたときにそれを削除します。 |
QSGNode::InternalReserved | 0x01000000 | 内部使用のために予約されています。 |
Flags 型は、QFlags<Flag> の typedef です。Flag 値の OR 組み合わせを格納します。
enum QSGNode::NodeType
ノードのタイプを特定するために使用できます。
| 定数 | 値 | 説明 |
|---|---|---|
QSGNode::BasicNodeType | 0 | ノードのタイプQSGNode |
QSGNode::GeometryNodeType | 1 | の型QSGGeometryNode |
QSGNode::TransformNodeType | 2 | の型QSGTransformNode |
QSGNode::ClipNodeType | 3 | のタイプQSGClipNode |
QSGNode::OpacityNodeType | 4 | その種類はQSGOpacityNode |
QSGNode::RenderNodeType | 6 | タイプは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.