4

QTableView の選択されたすべてのインデックスを削除しようとしていましたが、

今私は使用します:

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

行を削除すると、行IDが無効になるという明らかな問題がありますw

インデックスを直接受け取る関数がないため (または、データが変更されたときに無効になるイテレータのようにインデックスが機能しますか?)、どうすればよいかわかりません。

4

1 に答える 1

9

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());

それが役立つことを願っています。

于 2012-10-19T09:02:28.553 に答える