Qt 如何从QML基本类型列表中动态删除元素?
我已成功地使用添加元素Qt 如何从QML基本类型列表中动态删除元素?,qt,qml,Qt,Qml,我已成功地使用添加元素 list.push(element) 但是我该如何移除它们呢?我试过以下方法,但似乎都不管用 list.pop() list.pop_front() list.remove() list.remove(int) list.remove(element) 您不能删除单个项目。根据报告: 请注意,对象创建后不能单独添加到列表或从列表中删除;若要修改列表的内容,必须将其重新分配给新列表 这意味着基本列表类型很可能不存在pop方法。(但是,有一种push方法。) 使用Java
list.push(element)
但是我该如何移除它们呢?我试过以下方法,但似乎都不管用
list.pop()
list.pop_front()
list.remove()
list.remove(int)
list.remove(element)
您不能删除单个项目。根据报告: 请注意,对象创建后不能单独添加到列表或从列表中删除;若要修改列表的内容,必须将其重新分配给新列表 这意味着基本列表类型很可能不存在
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]
}
我在这里使用了
int
s,但您也可以存储QML对象和其他类型。使用JavaScript数组会将您的变量暴露给大多数(如果不是全部的话)JavaScript。对于像我这样总是出现在这个页面上的人来说:我找到了一个非常黑客的解决方案,可以从列表中删除元素
这不是很优雅,但如果您需要删除元素,它确实起到了作用。这是用户定义的list
属性吗?您存储的元素类型是什么?是的,这是一个用户定义的列表,我在其中存储AbstractSeries。
myList = Array.from(myList).filter(r => r !== elementIWant2Remove)