如何在QML中声明list属性(在我的情况下与Qt.labs.settings
一起使用):
Settings {
property list recentFiles: []
}
不起作用。我尝试了很多其他选项:list<string>
,string[]
等。似乎无效。
答案 0 :(得分:7)
Settings {
property var recentFiles: []
}
答案 1 :(得分:0)
由于您要询问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)
}
这将打印
qml: length: 2
qml: length: 3
但是我看到'rectList'也将接受以下内容:
MouseArea { id: mArea; }
..
rectList.push(mArea)
这没有道理。在Qt Creator中,命令建议/自动完成功能不适用于此语法。我猜这是某种传统语法,不应在新应用中使用。您应该改用其他答案建议的内容:
属性var myList:[]
然后,您将获得Qt Creator的更好支持。
“列表”的文档显示为[1]:
“列表只能存储QML对象,并且不能包含任何基本类型值。(要在列表中存储基本类型,请改用var类型。”
因此以下内容将无法编译:
property list<int> intList: []
同一文档还说:
“注意:不建议将列表类型用作自定义属性的类型。为此,应改用var类型,因为可以在QML中更灵活地操作由var类型存储的列表。”