Удалить элемент из QStandardItem в цикле

Я хочу удалить определенных дочерних элементов из элемента, мой родительский элемент является константным, т.е. Я не могу заменить его на другой родительский элемент, я должен работать над тем, что у меня есть. У детей есть несколько уровней детей. Я пробовал это, но это не работает.

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
    }
}

Как мне сделать это правильно? Заранее спасибо.

1 ответ

Решение

Вы не должны увеличивать строку при удалении строки. Или, если вы продолжаете увеличивать его, вы должны восстановить (уменьшить) количество строк после removeRow:

parent->removeRow(row); // this breaks child ordering for next Iteration
--row;
Другие вопросы по тегам