Qml可以使用C++中信号/槽函数,函数中可以传递参数,参数的类型支持多种格式。
Q_PROPERTY声明变量用处
- 类中定义的变量,都可以通过槽函数来访问,但若变量需要在Qml中像控件(如Button)一样使用,需要定义Q_PROPERTY来声明有很大的便利性。若变量无需像控件一样使用,就没有必要声明成Q_PROPERTY。
基本类型
- 基本类型数据如int,QString等,直接传递即可。
- 不建议传递引用,可能会出现传递失败的情况。
复杂数据类型-Json
- 复杂类型数据,创建Json对象,来进行传递--优选方法
- Json格式支持序列化,便于接口统一。
复杂类型数据-指针
- QObject及其子类,不支持拷贝构造函数。
- 直接使用复杂类的指针变量即可(该类需要继承QObject)。
- Q_PROPERTY(QList<QObject*> boxs READ boxs WRITE setBoxs)
Qml中声明复杂类型数据的方式
- 方式1--推荐
property var toys: Toys{}
property var box: Box{}
- 方式2
property alias toys: toysObject
Toys{
id: toysObject
}
Box{
id: boxObject
}