2.qml使用c++
目录
- 1.概述
- 2.注册方式
- 3. 分类
- ①枚举类
- ②工具类
- ③数据类
- ④资源类
- ②视图类
1.概述
qml是用来干嘛的?
当然是提高UI开发效率的
为什么要混合C++?
因为qml无法处理密集型数据逻辑
而加入c++则兼顾了性能
达到1+1>2
总结就是 qml 开发UI, C++ 实现逻辑
而js的用在简单的逻辑与接合c++与qml
2.注册方式
清楚了qml的使用,那么就意味着我们要开始着手逻辑
而qml 引入c++的方式则是通过将注册c++到qml中进行使用
注册方式就有以下几种:
常用如下
1.qmlRegisterModule()
注册类型前,先显示声明模块存在,否则通过类型的方式注册模块的话是隐式声明的
2.qmlRegisterType()
基本上这个就是正常的类型,没有什么限制,可以实例化
3.qmlRegisterUncreatableType()
如果希望对象只由C++创建则使用这个
4.qmlRegisterUncreatableMetaObject()
一般用于注册工具类或者专门提供枚举的枚举类
5.qmlRegisterInterface()
一般注册接口类, 用于容纳多态对象
6.qmlRegisterSingletonInstance()
注册单例模式
3. 分类
我们将qml使用c++的东西分类成以下几种
①枚举类
一般专门管理枚举的类
②工具类
一般就是提供静态方法的类
③数据类
派生于QObject ,专门提供给qml数据
用于作为一个数据类型,状态机,接口提供;
④资源类
qml提供了资源接口类QuickImageProvider
派生与QuickImageProvider的类,可以给qml中Image组件提供图像资源的路径,当然这个提供的静态图像资源
应用途径就有动态二维码,验证码等等
②视图类
用于渲染视图的类,也就是组件类
组件类有哪些呢? 就是派生于QQuickItem 与 QQuickPaintedItem 的类
将他们注册到qml 中就是qml的组件了