Qt中注册QML类型
来源:互联网 发布:数据库概论第5版答案 编辑:程序博客网 时间:2024/05/01 11:53
注册QML类型
使用C++代码扩展QML,可以将一个C++类注册到QML类型系统,以便在QML代码中将其作为一个数据类型。是一个可以将C++实现的类在QML中调用的,连接C++和QML的一个工具。
qmlRegisterType:注册可实例化的对象类型
QObject子类都可以注册为QML对象类型。注册成功之后,这个类就可以在QML代码中像其他对象类型一样声明和初始化。一旦创建完成,就可以在QML中使用属性值、函数和信号等特性。
作用:
QML和C++为什么要混合编程,简单来说,就是使用QML高效便捷地构建UI,而C++则用来实现业务逻辑和复杂算法。
qmlRegisterType里共4个参数,第一个参数*url指的是QML中import后的内容,相当于头文件名,第二个第三个参数分别是主次版本号,第四个指的是QML中类的名字。
class Message:public QObject{ Q_OBJECT Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged) Q_PROPERTY(QDateTime creationDate READ creationDate WRITE setCreationDate NOTIFY creationDateChanged) public: //...};
使用qmlRegisterType可以将其注册到QML类型系统。qmlRegisterType函数需要一个合适的命名空间和一个版本号。
如下所示:
qmlRegisterType(“com.mycompany.messageing”,1,0,”Message”);
注册成功之后,就可以在QML中声明和创建这个类型的对象,并使用其属性:
import com.mycompany.messaging 1.0Message{ author:"Amelie" creationDate:new Date()}
注册不可实例化对象类型
- 如一个C++类
- 是一个接口类型,不应该被实例化
- 是一个基类,不需要通过QML代码访问
- 仅 提供了一些有用的枚举,其余部分不应该被QML使用
- 是一个单例,只能使用其唯一的实例,不应该从QML进行实例化
为了应对这些情况,QML提供了一些用于注册不可实例化对象类型的方法。
可以采用无参数的qmlRegisterType()函数。由于qmlRegisterType()没有提供命名空间和版本号,也就不能在QML中引用,限制了QML引擎对该类型实例化的能力。
注册单例类型
阅读全文
0 0
- Qt中注册QML类型
- 注册QML类型
- 用单体类型注册单体对象到qml中
- QT之QML类型篇
- qt 中调用QML
- qt中使用QML
- 关于Qt的Qml中支持注册的C++接口函数重载的问题
- Qt注册元类型
- QT注册自定义类型
- Qt QML 入门 — 使用C++定义QML类型
- Qt Quick 2 — QML类型
- C++类注册到QML脚本中
- Qt Quick的C++类注册和QWidget添加qml
- Qt Qml 中Image的QSslSocket问题解决
- 在Qt Gui中嵌入QML
- Qt QML
- 在QML中使用自定义属性类型
- QML中引用全局枚举类型
- STM32Cube + Sublime + Keil使用技巧 更新ing
- Java线程-7:线程的调度-休眠
- HDU 6122
- ReactiveCocoa v2.5 源码解析之架构总览
- unity陀螺仪
- Qt中注册QML类型
- RNA-SEQ分析流程文献收集ing
- Android中SQL UNION联合查询的使用
- 反向传播
- linux CPU hotplug中断迁移
- python3--break与continue
- C# 打开文件与文件夹
- Linux获取文件最后修改时间
- Apache Camel系列(4)----Akka Camel