PySide6.QtQml.QQmlParserStatus

class QQmlParserStatus

QQmlParserStatus 类提供了关于 QML 解析器状态的更新。更多

继承者: QQuick3DObject, QQuick3DTextureData, QQuick3DRenderExtension, QQuick3DInstancing, QQuick3DGeometry, QQuickItem, QQuickRhiItem, QQuickPaintedItem, QQuickFramebufferObject, QGraphsTheme

概要

方法

虚拟方法

注意

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

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QQmlParserStatus 提供了一种机制,使得由 QQmlEngine 实例化的类可以在其创建的关键点接收通知。

这个类通常用于优化目的,因为它允许你将一个昂贵的操作推迟到对象的所有属性都设置完毕之后。例如,QML的Text元素使用解析器状态来推迟文本布局,直到其所有属性都已设置(我们不希望在分配text时进行布局,然后在分配font时重新布局,再在分配width时再次重新布局,依此类推)。

请注意,QQmlParserStatus 方法仅在类由 QQmlEngine 实例化时调用。如果你直接从 C++ 创建相同的类,这些方法将不会自动调用。为了避免这个问题,建议你从 classBegin 开始延迟操作,而不是从类的初始创建开始。这仍然可以防止在 QML 中初始绑定赋值期间的多次重新评估,但不会延迟从 C++ 调用的操作。

要使用QQmlParserStatus,你必须继承一个QObject派生的类和QQmlParserStatus,并使用Q_INTERFACES()宏。

class MyObject(QObject, QQmlParserStatus):

    Q_OBJECT
    Q_INTERFACES(QQmlParserStatus)
# public
    MyObject(QObject parent = None)
    # ...
    def classBegin():
    def componentComplete():
__init__()
abstract classBegin()

在类创建后调用,但在设置任何属性之前。

abstract componentComplete()

在导致此实例化的根组件完成构建后调用。此时,所有静态值和绑定值都已分配给类。