列表QML值类型

一组QML对象。更多信息...

详细描述

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

默认情况下,类型为list的属性是空的。

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

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

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

使用列表类型

例如,Item类型有一个列表类型属性states,可以按以下方式赋值和使用:

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值类型.

© 2024 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。本文档按照自由软件基金会发布的GNU自由文档许可协议版本1.3的条款进行许可。Qt及其相应的标志是The Qt Company Ltd.在芬兰以及其他国家和地区的商标。所有其他商标都是其各自所有者的财产。