class QSGNode#

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

继承者: QSGTransformNodeQSGTextNodeQSGRenderNodeQSGOpacityNodeQSGBasicGeometryNodeQSGGeometryNodeQSGSimpleTextureNodeQSGSimpleRectNodeQSGRectangleNodeQSGClipNode

概述#

方法#

虚函数##

注释

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

详细描述##

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

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

如果每个帧都更改节点,则可以使用preprocess()函数将节点更改应用于每帧渲染。使用preprocess()时,必须显式启用节点上的UsePreprocess标志。

虚拟的isSubtreeBlocked()函数可以用来完全禁用一个子树。被禁用的子树中的节点将不会执行preprocess()操作且不会进行渲染。

注释

所有带有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__(type)#
参数:

typeNodeType

__init__()

构造一个新的节点

appendChildNode(node)#
参数:

nodeQSGNode

将节点 node 添加到该节点的子节点列表中。

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

childAtIndex(i)#
参数:

i – int

返回类型:

QSGNode

返回索引 i 处的子节点。

子节点内部存储为一个链表,因此通过索引遍历子节点是次优的。

childCount()#
返回类型:

int

返回子节点数量。

clearDirty()#

注释

此函数已弃用。

dirtyState()#
返回类型:

组合 DirtyStateBit

注释

此函数已弃用。

firstChild()#
返回类型:

QSGNode

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

子节点存储在一个链表中。

flags()#
返回类型:

组合 Flag

返回此节点的标志集合。

另请参阅

setFlags()

insertChildNodeAfter(node, after)#
参数:

将节点 node 插入到该节点的子节点列表中,该列表中指定的节点之后。

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

insertChildNodeBefore(node, before)#
参数:

将节点 node 插入到该节点的子节点列表中,在指定的节点之前。

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

isSubtreeBlocked()#
返回类型:

bool

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

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

例如,QSGOpacityNode 在累积不透明度为 0 时会返回被阻塞的子树。

lastChild()#
返回类型:

QSGNode

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

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

markDirty(bits)#
参数:

bits - DirtyStateBit 的组合

通知所有已连接的渲染器节点具有脏的 bits

nextSibling()#
返回类型:

QSGNode

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

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

parent()#
返回类型:

QSGNode

返回此节点的父节点。

prependChildNode(node)#
参数:

nodeQSGNode

node 添加到此节点子节点列表的开头。

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

preprocess()#

覆盖此函数,在节点渲染之前对其进行处理。

需要在设置标志 UsePreprocess 以启用预处理。标志在节点添加到场景图之前需要设置,并在节点每帧渲染时调用 preprocess() 函数。

警告

注意在节点预处理期间删除节点。在性能损失很小的情况下,可以在节点自己的预处理调用期间删除单个节点。删除包含使用预处理节点的子树可能会导致段错误。这是为了性能原因。

previousSibling()#
返回类型:

QSGNode

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

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

removeAllChildNodes()#

从此节点子节点列表中删除所有子节点。

removeChildNode(node)#
参数:

nodeQSGNode

从此节点子节点列表中删除 node

reparentChildNodesTo(newParent)#
参数:

newParentQSGNode

setFlag(arg__1[, arg__2=true])#
参数:
  • arg__1Flag

  • arg__2 – bool

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

另请参阅

flags()

setFlags(arg__1[, arg__2=true])*
参数:
  • arg__1Flag 的组合

  • arg__2 – bool

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

另请参阅

flags()

type()*
返回类型:

NodeType

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