QML 类型系统

可用于在 QML 文档中定义对象层次结构的类型可以来自各种来源。它们可以是

  • 由 QML 语言原生提供
  • 通过 QML 模块使用 C++ 注册
  • 由 QML 模块作为 QML 文档提供

此外,应用开发者可以通过直接注册 C++ 类型或定义可重用组件在 QML 文档中提供自己的类型,然后导入这些组件。

无论类型定义来自何方,引擎都将强制执行属性和这些类型的实例的类型安全性。

QML 值类型

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

请参阅有关QML 值类型的文档以获取有关值类型更多信息。

QML 对象类型

QML 对象类型是可以从中实例化 QML 对象的类型。QML 对象类型由QtObject派生,并由 QML 模块提供。应用可以导入这些模块使用它们提供的对象类型。`QtQuick` 模块提供了在 QML 中创建用户界面所需的最常见对象类型。

最后,每个 QML 文档隐式定义了一个 QML 对象类型,该类型可以在其他 QML 文档中使用。有关 QML 类型系统中的对象类型的详细信息,请参阅相关文档。

QML 列表类型

列表类型可用于存储值或对象的序列。

请参阅有关QML 类型系统中的列表类型的文档以获取更多详细信息。

QML 命名空间

QML 命名空间可用于公开来自 C++ 命名空间的枚举。

请参阅有关QML 类型系统中的命名空间的文档以获取更多详细信息。

JavaScript 类型

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

例如,以下可以提供标准 DateArray 类型:

import QtQuick

Item {
    property var theArray: []
    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())
    }
}

有关 QML 文档中的JavaScript 表达式的更多详情。

© 2024 Qt公司有限公司。本文档中包含的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的、受GNU自由文档许可版1.3条款许可的。Qt及其相应商标是Qt公司在芬兰以及世界其他国家的商标。商标归各自所有者所有。