Qt 如何在QML中声明列表属性

Qt 如何在QML中声明列表属性,qt,qml,qt5,qtquick2,Qt,Qml,Qt5,Qtquick2,如何在QML中声明列表属性(在我的示例中用于Qt.labs.settings): 不起作用。我尝试了许多其他选项:列表,字符串[],等等。似乎都不起作用 Settings { property var recentFiles: [] } 列表只能存储QML对象,不能包含任何基本类型 价值观 string是一种基本类型,所以不能将其存储在列表中。 为此,您最好使用property var recentFiles,因为您询问的是list属性(“list”关键字),那么以下语法似乎有效:

如何在QML中声明列表属性(在我的示例中用于
Qt.labs.settings
):

不起作用。我尝试了许多其他选项:
列表
字符串[]
,等等。似乎都不起作用

Settings {
    property var recentFiles: []
}


列表只能存储QML对象,不能包含任何基本类型 价值观

string是一种基本类型,所以不能将其存储在列表中。
为此,您最好使用
property var recentFiles

,因为您询问的是list属性(“list”关键字),那么以下语法似乎有效:

property list<Rectangle> rectList: [
    Rectangle { id: a; },
    Rectangle { id: b; }
]

Rectangle { id: c }

Component.onCompleted: {
    console.log("length: " + rectList.length)
    rectList.push(c)
    console.log("length: " + rectList.length)
}
但我认为“rectList”也会接受以下内容:

MouseArea { id: mArea; }
..
rectList.push(mArea)
这没有道理。命令建议/自动完成在Qt Creator中不适用于此语法。我猜这是某种遗留语法,不应该在新的应用程序中使用。您应该使用其他答案建议的内容:

属性变量myList:[]

然后,Qt Creator会为您提供更好的支持

“列表”的文档上写着[1]:


列表只能存储QML对象,不能包含任何基本类型值。(要在列表中存储基本类型,请改用var类型。)

因此,以下内容无法编译:

property list<int> intList: []
属性列表intList:[]
这些文件还说:

“注意:不建议将列表类型作为自定义属性的类型。为此,应使用var类型,因为var类型存储的列表可以在QML中以更大的灵活性进行操作。”


[1]

property variant recentFiles:[]“列表只能存储QML对象,不能包含任何基本类型值。(要在列表中存储基本类型,请改用var类型。)”这很有效,谢谢。关键字
列表
的用途是什么?
MouseArea { id: mArea; }
..
rectList.push(mArea)
property list<int> intList: []