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
可以在不同形式下安全使用
和 C++
void someFunction() { MySingleton::instance().someProperty.setValue(42); }
另请参阅 单例 和 在 QML 中定义单例。
在某些 Qt 许可证下可用。
了解更多信息。