@QmlSingleton

Declares the decorated type to be a singleton in QML. This only takes effect if the type is a QObject and is available in QML (by having a QmlElement decorator). The QQmlEngine will try to create a singleton instance using the type’s default constructor.

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

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

It is also possible to use a static create() method which receives the engine as a parameter:

@QmlElement
@QmlSingleton
class ClassForQml(QObject):

    @staticmethod
    def create(engine):
        ...

Note

The order of the decorators matters; QmlSingleton needs to be preceded by QmlElement.