Я хочу удалить определенные дочерние элементы из элемента, мой родительский элемент является const, т.е. Я не могу заменить его на другой родительский элемент, я должен работать над тем, что у меня есть. У детей есть несколько уровней детей.
Я пробовал это, но это не работает.
QStringList list; // contains list of names that should be deleted
for(int row=0; row < parent->rowCount(); ++row)
{
QStandardItem* child = parent->child(row);
bool found = 0;
for(size_t i = 0; i<list.size(); ++i)
{
if(list[i] == child->text()) // check if child should be removed
{
found = 1;
break;
}
}
if(!found)
{
parent->removeRow(row); // this breaks child ordering for next iteration
}
}
Как мне сделать это правильно? Заранее спасибо.
Вы не должны увеличивать строку при удалении строки. Или, если вы продолжаете увеличивать его, вы должны восстановить (уменьшить) количество строк после removeRow:
parent->removeRow(row); // this breaks child ordering for next Iteration
--row;