The QML Type System
在QML文档中, 对象层次结构定义的类型有多个来源. 它们可能是:
- QML语言提供的内置类型
- QML模块注册的C++类型
- QML模块以QML文件形式提供的类型
此外, 应用程序开发人员自定义类型, 这个可以是直接注册的C++类型, 或者在QML文档中定义可重用组件, 然后导入这些组件.
无论类型定义来自哪里, 引擎都将为这些类型的属性和实例强制执行类型安全性.
值类型
QML语言内置支持各种基本类型, 包括整型, 双精度浮点数, 字符串和布尔值. 对象可能具有这些类型的属性, 并且这些类型的值可以作为参数传递给对象的方法.
详见 QML 值类型.
JavaScript类型
QML引擎支持JavaScript对象和数组. 使用var类型可以创建和存储任意标准的JavaScript类型.
如下所示, Date
和Array
是有效类型:
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.