在一个quick 程序中其实 .qml 和c++文件是两个平行的世界,所以想要在qml中使用c++ 在qt中提供了两种方法
a、把c++的一个类注册为qml环境的一个类型 这样就能在qml环境中使用该类型创建对象
b、在c++中构造一个对象,将这个对象设置为qml的上下文属性,在qml中能够直接使用该属性
想要在qml中使用 c++ (不管是上面哪种方式)必须满足两个条件
a、继承自QObjec 或是他的派生类
b、使用Q_OBJECT宏
1、在qml中可以访问的c++类(设置类的属性)
信号和槽 : 可以把c++信号链接到qml 也可以把 qml信号链接到c++槽 也可以直接调用c++的信号链接c++的槽
Q_INVOKABLE宏修饰的 c++类中的成员方法
Q_ENUMS 宏修饰的枚举类型
Q_PROPERTY宏修饰的属性 这个宏用起来有点麻烦详细可以查看文档
2、在qml怎么僵c++类注册为qml类型
①实现c++类
②注册成qml类型 qmlRegisterSingleType()单例类型;qmlRegisterUncreatableType()有附加属性的类型;qmlRegisterTypeNotAvailable()注册一个类型用来占位;qmlRegisterType()注册一个非单利类型
③在qml中导入类型 import()
④在qml中创建该类型的实例并且使用
3、在c++对象导出为qml属性
①查看
图a1
②如果是+Windows 的程序如图a2
转载请注明原文地址: https://ju.6miu.com/read-1605.html