list QML Value Type

QML 对象的列表。更多

详细说明

list 类型指 QML 对象或值的列表。

list 类型的属性默认为空。

list 可存储 QML 对象或值类型值。

与 C++ 集成时,请注意从 C++ 传入 QML 的任何QQmlListProperty 值都会自动转换为list 值,反之亦然。

同样,注册值类型T 的任何QList<T> 都会自动转换成list 值,反之亦然。

使用列表类型

例如,Item 类型有一个states list-type 属性,可分配给该属性并按以下方式使用:

import QtQuick

Item {
    width: 100; height: 100

    states: [
        State { name: "activated" },
        State { name: "deactivated" }
    ]

    Component.onCompleted: {
        console.log("Name of first state:", states[0].name)
        for (var i = 0; i < states.length; i++)
            console.log("state", i, states[i].name)
    }
}

定义的State 对象将按照定义的顺序添加到states 列表中。

如果列表只包含一个对象,方括号可以省略:

import QtQuick

Item {
    width: 100; height: 100
    states: State { name: "activated" }
}

您也可以在 QML 中声明自己的列表属性:

import QtQml

QtObject {
    property list<int> intList: [1, 2, 3, 4]
    property list<QtObject> objectList
}

列表的使用很像 JavaScript 数组。例如

  • 使用[] 方括号语法,用逗号分隔赋值。
  • length 属性提供列表中项的数量
  • 使用[index] 语法访问列表中的值
  • 可以使用push() 添加条目
  • 可以设置列表的length 属性来截断或扩展列表。

但是,您不能通过赋值给当前超出范围的索引来自动扩展列表。此外,如果在对象列表中插入null 值,这些值将被转换为底层QQmlListProperty 中的nullptr 条目。

值类型列表还有一个重要方面与 JavaScript 数组不同:通过设置长度来增长列表并不会产生未定义的条目,而是会产生默认构建的值类型实例。

同样,以这种方式增长对象类型列表也会产生空条目,而不是未定义条目。

这种值类型由 QML 语言提供。

另请参阅 QML 值类型

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.