The QML Type System

在QML文档中, 对象层次结构定义的类型有多个来源. 它们可能是:

  • QML语言提供的内置类型
  • QML模块注册的C++类型
  • QML模块以QML文件形式提供的类型

此外, 应用程序开发人员自定义类型, 这个可以是直接注册的C++类型, 或者在QML文档中定义可重用组件, 然后导入这些组件.

无论类型定义来自哪里, 引擎都将为这些类型的属性和实例强制执行类型安全性.

值类型

QML语言内置支持各种基本类型, 包括整型, 双精度浮点数, 字符串和布尔值. 对象可能具有这些类型的属性, 并且这些类型的值可以作为参数传递给对象的方法.

详见 QML 值类型.

JavaScript类型

QML引擎支持JavaScript对象和数组. 使用var类型可以创建和存储任意标准的JavaScript类型.

如下所示, DateArray是有效类型:


  import QtQuick 2.0

  Item {
      property var theArray: new Array()
      property var theDate: new Date()

      Component.onCompleted: {
          for (var i = 0; i < 10; i++)
              theArray.push("Item " + i)
          console.log("There are", theArray.length, "items in the array")
          console.log("The time is", theDate.toUTCString())
      }
  }

详见 JavaScript Expressions in QML Documents.

QML对象类型

QML对象类型派生自QtObject, 并由QML模块提供. 应用程序可以导入这些模块, 并使用它们提供的对象类型. QtQuick模块提供创建QML用户界面所需的最常见的对象类型.

最后, 每个QML文档都隐式地定义一个QML对象类型, 这个类型可以在其他QML文档中重复使用. 详见 object types in the QML type system.