当前位置: 代码迷 >> 综合 >> 30.qt quick-使用qmlRegisterSingletonType注册单例类给QML使用
  详细解决方案

30.qt quick-使用qmlRegisterSingletonType注册单例类给QML使用

热度:76   发布时间:2023-12-03 05:32:20.0

上章,我们学习使用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使用.

2.demo实现效果

  相关解决方案