У меня есть массив JS, который я использую в QML.В этом массиве я храню много динамических объектов (компонентов), которые я создаю и показываю в своем окне приложения.У меня также есть кнопка «Очистить все», которая должна удалять все элементы путем перебора этого массива.Я использую delete, а затем shift()
, чтобы удалить элементы, однако по некоторым причинам не каждый объект удаляется или удаляется.Это почему?
Это код, который не работает:
Button
{
id: clearallButton
width: 60
height: 25
text: qsTr("Clear all")
onClicked:
{
for (var y = 0; y < canvas.componentvect.length; ++y)
{
canvas.componentvect[y].destroy();
canvas.componentvect.shift();
}
}
}
И это код, который работал для меня:
Button
{
id: clearallButton
width: 60
height: 25
text: qsTr("Clear all")
onClicked:
{
for (var y = 0; y < canvas.componentvect.length; ++y)
{
canvas.componentvect[y].destroy();
}
var emptyvect=[];
canvas.componentvect=emptyvect;
}
}
Когда я пытаюсь вариант 1, он только удаляет некоторые объекты, а некоторые все еще остаются?Это почему?Я вызываю delete для каждого объекта и shift()
, чтобы удалить его из массива.Разве не каждый объект должен быть удален тогда, как в примере 2?