删除QStandardItemModel的多个索引的正确方法是什么?

时间:2012-10-19 07:36:53

标签: qt model qt4

我试图删除QTableView的所有选定索引

现在我用:

foreach (const QModelIndex & idx, model->selectionModel()->selectedIndexes())
{
    model->removeRow (idx.row()); // Obviously bug
}

有一个明显的问题,一旦你删除了行,行id就会失效,w

由于没有直接采用索引的函数(或者索引是否像迭代器那样在数据发生变化时会失效?),我不知道该怎么做。

1 个答案:

答案 0 :(得分:8)

QPersistanceModelIndex类保持索引的有效状态。我试过了,似乎工作正常。

QList<QPersistentModelIndex> indexes;

foreach (const QModelIndex &i, ui->tableView->selectionModel()->selectedIndexes())
    indexes << i;

foreach (const QPersistentModelIndex &i, indexes)
    ui->tableView->model()->removeRow(i.row());

我希望它会有所帮助。