C

单例结构体

template <typename T> struct Qul::Singleton

从该类继承以将 C++ 类或结构体作为单例暴露给 QML。 更多信息...

头文件 #include <qul/singleton.h>
Qt Quick Ultralite 1.0
继承 Qul::Object

静态公共成员

T &instance()

详细描述

qmlinterfacegenerator 工具将为从单例派生出的类生成带有 pragma Singleton 指令的 QML 类型。

此类使用 Curiously recurring template pattern (CRTP),模板参数需要是派生类型。

最小示例

struct MySingleton : public Qul::Singleton<MySingleton>
{
    Property<int> someProperty;
    int someFunction(int param);
};

如果您不打算从 C++ 代码中使用 Singleton,则上述示例就足够好了。否则,您应该使其更加完整

struct MySingleton : Qul::Singleton<MySingleton>
{
    // Create friendship for a base class to be able to access private constructor
    friend struct Qul::Singleton<MySingleton>

    Property<int> someProperty;
    int someFunction(int param);

private:
    MySingleton() {}                                // Private constructor
    MySingleton(const MySingleton &);              // Non copy-constructible
    MySingleton &operator=(const MySingleton &);   // Non copyable
};

现在 MySingleton 可以在不同形式下安全使用

Item {
    property int otherProperty: MySingleton.someProperty
}

和 C++

void someFunction() {
    MySingleton::instance().someProperty.setValue(42);
}

另请参阅 单例在 QML 中定义单例

成员函数文档

[静态] T &Singleton::instance()

返回对单例实例的引用。

在某些 Qt 许可证下可用。
了解更多信息。