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() 関数を使用すると、サブツリーを一括して無効にできます。ブロックされたサブツリー内のノードは前処理()されず、レンダリングされません。

注意: 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 enum は、QSGNode::Flags のフラグを記述します。QSGNode

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

Flags 型はQFlags<Flag> の typedef です。フラグ値の 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)

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

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

[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() 関数が呼び出されます。

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

QSGNode *QSGNode::previousSibling() const

親の子ノードリストでこのノードの前にあるノードを返す。

子ノードはリンクリストとして格納されます。

void QSGNode::removeAllChildNodes()

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

void QSGNode::removeChildNode(QSGNode *node)

このノードの子リストからnode を削除する。

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

enabled が真の場合、このノードにフラグf を設定する。そうでない場合、フラグをクリアする。

flags()も参照

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

enabled が真の場合、このノードにフラグf を設定する。そうでない場合、フラグをクリアする。

flags()も参照

QSGNode::NodeType QSGNode::type() const

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

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