PySide6.QtQuick.QSGNode

class QSGNode

QSGNode 类是场景图中所有节点的基类。更多

继承自: QSGTransformNode, QSGTextNode, QSGRootNode, QSGRenderNode, QSGOpacityNode, QSGBasicGeometryNode, QSGGeometryNode, QSGSimpleTextureNode, QSGSimpleRectNode, QSGRectangleNode, QSGNinePatchNode, QSGImageNode, QSGClipNode

概要

方法

虚拟方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QSGNode 类可以用作子容器。子节点可以通过 appendChildNode()prependChildNode()insertChildNodeBefore()insertChildNodeAfter() 添加。节点的顺序很重要,因为几何节点是根据它们在场景图中的顺序进行渲染的。

场景图节点包含一种机制,用于描述场景的哪些部分发生了变化。这包括组合矩阵、累积不透明度、节点层次结构的变化等。这些信息可以用于场景图渲染器内部的优化。为了使渲染器正确渲染节点,用户在节点更改时使用正确的标志调用markDirty()非常重要。节点类上的大多数函数将隐式调用markDirty()。例如,appendChildNode()将调用markDirty()并传入DirtyNodeAdded

如果节点每帧都发生变化,可以使用preprocess()函数在每帧渲染时对节点应用更改。必须通过在节点上设置UsePreprocess标志来显式启用preprocess()的使用。

虚拟的isSubtreeBlocked()函数可以用来完全禁用一个子树。被禁用的子树中的节点将不会被预处理(),也不会被渲染。

注意

所有带有QSG前缀的类应仅在场景图的渲染线程上使用。有关更多信息,请参见场景图和渲染

class NodeType

可用于确定节点的类型。

常量

描述

QSGNode.BasicNodeType

QSGNode的类型

QSGNode.GeometryNodeType

QSGGeometryNode的类型

QSGNode.TransformNodeType

QSGTransformNode的类型

QSGNode.ClipNodeType

QSGClipNode的类型

QSGNode.OpacityNodeType

QSGOpacityNode的类型

QSGNode.RenderNodeType

QSGRenderNode的类型

另请参阅

type()

class Flag

(继承自 enum.Flag) QSGNode::Flag 枚举描述了 QSGNode 上的标志

常量

描述

QSGNode.OwnedByParent

该节点由其父节点拥有,当父节点被删除时,该节点也将被删除。

QSGNode.UsePreprocess

节点的虚拟 preprocess() 函数将在渲染开始之前被调用。

QSGNode.OwnsGeometry

仅对QSGGeometryNodeQSGClipNode有效。该节点拥有QSGGeometry实例的所有权,并在节点销毁或分配几何体时删除它。

QSGNode.OwnsMaterial

仅对QSGGeometryNode有效。节点拥有材质的所有权,当节点被销毁或分配了材质时,节点将删除它。

QSGNode.OwnsOpaqueMaterial

仅对QSGGeometryNode有效。该节点拥有不透明材质的所有权,并在节点销毁或分配材质时删除它。

QSGNode.InternalReserved

保留供内部使用。

class DirtyStateBit

(继承自 enum.Flag) 用于 markDirty() 以指示场景图如何发生变化。

常量

描述

QSGNode.DirtyMatrix

QSGTransformNode 中的矩阵已更改。

QSGNode.DirtyNodeAdded

添加了一个节点。

QSGNode.DirtyNodeRemoved

一个节点被移除。

QSGNode.DirtyGeometry

QSGGeometryNode的几何形状已更改。

QSGNode.DirtyMaterial

QSGGeometryNode 的材质已更改。

QSGNode.DirtyOpacity

QSGOpacityNode 的不透明度已更改。

QSGNode.DirtySubtreeBlocked

子树已被阻止。

另请参阅

markDirty()

__init__()

构建一个新节点

__init__(type)
Parameters:

类型NodeType

appendChildNode(node)
Parameters:

节点QSGNode

node附加到此节点的子节点列表中。

节点的排序很重要,因为几何节点将按照它们添加到场景图的顺序进行渲染。

childAtIndex(i)
Parameters:

i – 整数

Return type:

QSGNode

返回索引为 i 的子元素。

子节点在内部以链表的形式存储,因此通过索引遍历子节点的效率较低。

childCount()
Return type:

整数

返回子节点的数量。

clearDirty()

注意

此函数已弃用。

dirtyState()
Return type:

DirtyStateBit的组合

注意

此函数已弃用。

firstChild()
Return type:

QSGNode

返回此节点的第一个子节点。

子节点存储在链表中。

flags()
Return type:

Flag的组合

返回此节点的标志集。

另请参阅

setFlags()

insertChildNodeAfter(node, after)
Parameters:

node插入到此节点的子节点列表中,位于使用after指定的节点之后。

节点的排序很重要,因为几何节点将按照它们添加到场景图的顺序进行渲染。

insertChildNodeBefore(node, before)
Parameters:

node插入到此节点的子节点列表中,位于before指定的节点之前。

节点的排序很重要,因为几何节点将按照它们添加到场景图的顺序进行渲染。

isSubtreeBlocked()
Return type:

布尔

返回此节点及其子树是否可用。

被阻止的子树将不会更新其脏状态,也不会被渲染。

例如,当累积不透明度为0时,QSGOpacityNode将返回一个被阻止的子树。

lastChild()
Return type:

QSGNode

返回此节点的最后一个子节点。

子节点以链表的形式存储。

markDirty(bits)
Parameters:

bitsDirtyStateBit 的组合

通知所有连接的渲染器,该节点有脏的bits

nextSibling()
Return type:

QSGNode

返回父节点子节点列表中此节点之后的节点。

子节点以链表的形式存储。

parent()
Return type:

QSGNode

返回此节点的父节点。

prependChildNode(node)
Parameters:

节点QSGNode

node前置到此节点的子节点列表中。

节点的排序很重要,因为几何节点将按照它们添加到场景图的顺序进行渲染。

preprocess()

重写此函数以在节点渲染之前对其进行处理。

预处理需要通过设置标志UsePreprocess来显式启用。该标志需要在节点添加到场景图之前设置,并且会导致在节点渲染的每一帧中调用preprocess()函数。

警告

在节点正在预处理时删除节点要小心。在节点自身的预处理调用期间删除单个节点是可能的,尽管会有轻微的性能影响。删除包含使用预处理的节点的子树可能会导致分段错误。这是出于性能考虑。

previousSibling()
Return type:

QSGNode

返回父节点子节点列表中此节点之前的节点。

子节点以链表的形式存储。

removeAllChildNodes()

从该节点的子节点列表中移除所有子节点。

removeChildNode(node)
Parameters:

节点QSGNode

从该节点的子节点列表中移除 node

reparentChildNodesTo(newParent)
Parameters:

newParentQSGNode

setFlag(f[, enabled=true])
Parameters:
  • fFlag

  • enabled – 布尔值

如果enabled为真,则在此节点上设置标志f;否则清除该标志。

另请参阅

flags()

setFlags(f[, enabled=true])
Parameters:
  • fFlag 的组合

  • enabled – 布尔值

如果enabled为真,则在此节点上设置标志f;否则清除标志。

另请参阅

flags()

type()
Return type:

NodeType

返回此节点的类型。节点类型必须是NodeType中定义的预定义类型之一,并且可以安全地用于转换为相应的类。