Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何从QML基本类型列表中动态删除元素?_Qt_Qml - Fatal编程技术网

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)