@QmlSingleton#

将装饰的类型声明为 QML 中的单例。只有当类型是 QObject 并且在 QML 中可用(通过具有 QmlElement 装饰器)时,此声明才有效。QQmlEngine 将尝试使用类型的默认构造函数来创建单例实例。

QML_IMPORT_NAME = "com.library.name"
QML_IMPORT_MAJOR_VERSION = 1
QML_IMPORT_MINOR_VERSION = 0 # Optional

@QmlElement
@QmlSingleton
class ClassForQml(QObject):
    ...

也可以使用接受引擎作为参数的静态 create() 方法

@QmlElement
@QmlSingleton
class ClassForQml(QObject):

    @staticmethod
    def create(engine):
        ...

注意

装饰器的顺序很重要;QmlSingleton 必须在 QmlElement 之前。