class QQmlParserStatus#

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

继承自: QQuick3DObjectQQuick3DTextureDataQQuick3DRenderExtensionQQuick3DInstancingQQuick3DGeometryQQuickItemQQuickRhiItemQQuickPaintedItemQQuickFramebufferObjectQSeriesThemeQGraphThemeQ3DTheme

概述#

方法#

虚函数#

注意

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

详细说明#

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

QQmlParserStatus 为由 QQmlEngine 实例化的类提供了在创建的关键点接收通知的机制。

此类常用于优化目的,因为它可以在对象的所有属性都设置之后延迟执行耗时的操作。例如,QML的Text元素使用解析器状态来延迟文本布局,直到所有其属性都设置(我们不希望在text赋值时进行布局,然后当font赋值时重新布局,当width赋值时再次重新布局,依此类推)。

请注意,只有在由QQmlEngine实例化一个类时,才调用QQmlParserStatus类的方法。如果您直接从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()#

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