上章,我们学习使用qmlRegisterType()注册C++类到QML中.本章我们来学习qmlRegisterSingletonType,如何注册单例类给QML使用。
1.qmlRegisterSingletonType函数介绍
qmlRegisterSingletonType函数模版声明如下:
template<typename T>
int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QObject *(*)(QQmlEngine *, QJSEngine *) callback);template<typename T>
int qmlRegisterSingletonType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName);
- 第一个带callback参数的是用来将C++类实例化后,然后保存到QML全局环境中,供QML使用
- 第二个是用来将QML类型实例化为单例类给QML使用(这个更简单了,直接参考帮助文档即可,但是单例类无法创建可视化的QML类,因为未指定父类就已经生成了)
单例类在应用开发很常见,比如配置文件类、系统信息类等,因为可能在每个页面都可能去访问它.
本章我们来实现一个 Xml配置文件的C++类,然后通过qmlRegisterSingletonType来单例化给QML使用.