如何从 QML 基本类型列表中动态删除元素?

Has*_*adi 8 qt qml

我已经使用成功添加元素

list.push(element)
Run Code Online (Sandbox Code Playgroud)

但我该如何删除它们呢?我尝试过以下方法,但似乎都不起作用。

list.pop()
list.pop_front()
list.remove()
list.remove(int)
list.remove(element)
Run Code Online (Sandbox Code Playgroud)

小智 9

对于像我一样总是停留在这个页面上的人:我找到了一个非常hacky的解决方案来从list<QtObject>.

myList = Array.from(myList).filter(r => r !== elementIWant2Remove)
Run Code Online (Sandbox Code Playgroud)

这不是很优雅,但如果您需要删除一个元素,它就可以解决问题。


Tre*_*edJ 4

您无法删除单个项目。根据文档

请注意,对象一旦创建就不能单独添加到列表中或从列表中删除;要修改列表的内容,必须将其重新分配给新列表。

这意味着该pop方法很可能不会与基本列表类型一起存在。(不过,一个push方法。)

使用 JavaScript 数组会更好。

property var myArray: [1, 2, 3]

Component.onCompleted: {
    myArray.push(4);
    myArray.push(5);
    myArray.splice(1, 1)    // simulates a remove
    myArray.pop();          // pop last item

    console.debug(myArray)  // [1, 3, 4]
}
Run Code Online (Sandbox Code Playgroud)

我在这里使用了ints,但您也可以存储 QML 对象和其他类型。使用 JavaScript 数组会将变量暴露给大多数(如果不是全部)JavaScript 的数组函数