引言
用了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