QML基础:通过C++定义QML类型

本文介绍了如何通过C++在QML中定义和注册QML类型,包括可实例化对象类型、不可实例化的对象类型和单例对象类型。注册后,C++类的属性、方法和信号可以供QML使用。强调了所有注册的C++类必须继承自QObject,同时提供了各种注册方法的示例。
摘要由CSDN通过智能技术生成

引言

用了N年的QWidget,因为项目需求而开始学习QML做一些动态的界面,下面开始记录学习QML的新路历程。
注:学习有误的望指点一二,不喜勿喷!!!

C++定义QML类型

使用C++代码扩展QML时,可以在QML类型系统中注册C++类,使该类可用于QML代码中的数据类型。C++类需要将属性、方法、信号等暴露给QML后,QML才能使用。
另外,注册类型还有:不可实例化对象类型、单例类型。


注册可实例化对象类型

任何QObject派生的C++类都可以注册为QML对象类型。C++类注册到QML类型系统后,该类就可以像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可以将Message类注册到QML类型系统中,qmlRegisterType函数需要一个合适的命名空间和一个版本号,如下所示:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值