在 QML 中使用 C++ 类和对象

1.实现 C++ 类,从 QObject 或 QObject 的派生类继承
类中第一行添加  Q_OBJECT 宏

2.修饰成员函数或属性
Q_INVOKABLE 宏用来定义可通过元对象系统访问的方法
Q_PROPERTY 宏用来定义可通过元对象系统访问的属性
信号或者槽,都可以直接在 QML 中访问

3. 在C++中注册,头文件中需 include<XX.h> (有时候Qt Creator可以识别,但是不添加头文件可能会报错

使用如下注册:
setContextProperty、qmlRegisterType、qmlRegisterUncreatableType等

注册实例化类型
qmlRegisterType()将类作为QML类型注册到特定的类型名称空间中

注册非实例化类型
有时,可能需要向QML类型系统注册QObject派生类时不希望将其注册为可实例化类型。比如一个C++类:

是不应实例化的接口类型
是不需要暴露给QML的基类类型
声明一些能从QML访问的枚举,但自己不应该被实例化
一个应该通过单例实例提供给QML的类型,并且不应该从QML实例化
Qt QML模块提供了几种注册非实例化类型的方法:

qmlRegisterType()(不带参数)注册一个不可实例化且无法从QML引用的C++类型。这使引擎能够强制执行可从QML实例化的所有继承类型。
qmlRegisterInterface()使用特定的QML类型名称注册Qt的接口类型。类型不能从QML实例化,但可以通过其类型名引用。
qmlRegisterUncreatableType()注册一个C++类型,该类型不可实例化,但应可识别为QML类型系统的类型。如果类型的枚举或附加属性应该可以从QML访问,但是类型本身不应该是可实例化的,那么这很有用。
qmlRegisterSingletonType() 注册可以从QML导入的单例类型。


4.在QML中使用import引入模块名
5.在QML中调用

参考:【QML与C++混合编程】在 QML 中使用 C++ 类和对象(一)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值