【qml】qml和c++中的数据类型转换

  1. Qt(C++)和qml基本类型,可以直接转换,如下表所示: 【qml】qml和c++中的数据类型转换

  2. 直接或间接以QObject为基类的类型。
    只要将改类型注册到qml的类型系统。

  3. Qt(C++)类型和javascrpt类型之间的转换。

  4. QVariantList 和QVariantMap 到JavaScript的Array 和Object之间的类型转换。

  5. QDateTime和javascript 中的Date之间的转换。

  6. 序列类型到JavaScript中Array类型的转换。
    目前支持以下类型:
    QList
    QList
    QList
    QList and QStringList
    QList
    有两种使用方式:
    1)以Q_PROPERTY声明的属性。

  1. 以Q_INVOKABLE声明的函数的返回值。
    注意:这两种方式有如下差异:
    1)作为Q_PROPERTY声明的属性的方式,通过下标修改或访问任何一个元素都会通过属性系统进行读写操作。
    2)作为Q_INVOKABLE函数返回值的方式,在访问和修改时对系统的性能影响很小。
  1. 以Q_GADGET声明的自定义c++类型,需要在JavaScript中访问的属性都用Q_PROPERTY声明,需要在JavaScript中访问的函数都要用Q_INVOKABLE声明。这和继承自QObject的类型的用法相同。
  2. 想要使用一个在c++中定义的枚举类型,包含该枚举的类必须要注册并且,该枚举应该使用Q_ENUMS来声明。注意: 枚举类型的值的首字母必须大写,才能在mql中被访问。