【qml】qml和c++中的数据类型转换
-
Qt(C++)和qml基本类型,可以直接转换,如下表所示:
-
直接或间接以QObject为基类的类型。
只要将改类型注册到qml的类型系统。 -
Qt(C++)类型和javascrpt类型之间的转换。
-
QVariantList 和QVariantMap 到JavaScript的Array 和Object之间的类型转换。
-
QDateTime和javascript 中的Date之间的转换。
-
序列类型到JavaScript中Array类型的转换。
目前支持以下类型:
QList
QList
QList
QList and QStringList
QList
有两种使用方式:
1)以Q_PROPERTY声明的属性。
- 以Q_INVOKABLE声明的函数的返回值。
注意:这两种方式有如下差异:
1)作为Q_PROPERTY声明的属性的方式,通过下标修改或访问任何一个元素都会通过属性系统进行读写操作。
2)作为Q_INVOKABLE函数返回值的方式,在访问和修改时对系统的性能影响很小。
- 以Q_GADGET声明的自定义c++类型,需要在JavaScript中访问的属性都用Q_PROPERTY声明,需要在JavaScript中访问的函数都要用Q_INVOKABLE声明。这和继承自QObject的类型的用法相同。
- 想要使用一个在c++中定义的枚举类型,包含该枚举的类必须要注册并且,该枚举应该使用Q_ENUMS来声明。注意: 枚举类型的值的首字母必须大写,才能在mql中被访问。