Tim*_*mmm 10 qt qml qt5 qtquick2
如何在QML中声明list属性(Qt.labs.settings在我的情况下使用):
Settings {
property list recentFiles: []
}
Run Code Online (Sandbox Code Playgroud)
不行.我尝试过许多其他选项:list<string>,string[],等无似乎工作.
gat*_*lis 10
由于您询问的是 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)
}
Run Code Online (Sandbox Code Playgroud)
这将打印
qml: length: 2
qml: length: 3
Run Code Online (Sandbox Code Playgroud)
但我看到 'rectList' 也会接受以下内容:
MouseArea { id: mArea; }
..
rectList.push(mArea)
Run Code Online (Sandbox Code Playgroud)
这没有意义。并且命令建议/自动完成在 Qt Creator 中不适用于此语法。我猜这是某种遗留语法,不应在新应用程序中使用。您应该改用其他答案所建议的内容:
属性 var myList: []
然后你会得到 Qt Creator 更好的支持。
“列表”的文档说 [1]:
“列表只能存储 QML 对象,不能包含任何基本类型值。(要在列表中存储基本类型,请改用 var 类型。)”
所以以下不会编译:
property list<int> intList: []
Run Code Online (Sandbox Code Playgroud)
相同的文档还说:
“注意:不建议将列表类型作为自定义属性的类型。为此应使用 var 类型,因为可以在 QML 中以更大的灵活性操作由 var 类型存储的列表。”
[1] https://doc.qt.io/qt-5/qml-list.html
Settings {
property var recentFiles: []
}
Run Code Online (Sandbox Code Playgroud)
http://doc.qt.io/qt-5/qml-var.html
| 归档时间: |
|
| 查看次数: |
13286 次 |
| 最近记录: |