从循环中的 QStandardItem 中删除项目

Remove item from QStandardItem in loop

我想从项目中删除特定的子项目,我的父项目是常量,即。我不能用不同的父项目替换它,我必须处理我拥有的那个。子项本身有多个级别的子项。 我已经试过了,但它不起作用。

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;