QAbstractItemModelでいくつかの行を削除できません。QTableView + QAbstractItemModelでいくつかの行を削除します。
私の問題は、私はいくつかの行を選択した場合、行は私が選択した行をループ、その後1と3
言うことですし、それらを削除します。しかし、私は行1
を削除した後、行3
は行2
になるので、実際には行4
を削除します。ここで
は、選択した行を取得するために私の方法であり、ここで
def get_selected_rows(self):
view = self._view
selection = view.selectionModel()
return selection.selectedRows()
は、特定の行を削除するための私の方法です:
:def delete_obj(self, row):
self._model.removeRow(row.row())
そして、ここでは私のコントローラの私の方法であり、
def on_delete_clicked(self):
for selected_index in self._view.get_selected_rows():
self._view.delete_obj(selected_index)
ループの各繰り返しの後にすべてのインデックスを再計算しないようにする方法はありますか?
アイテムのインデックスは、すぐにモデルが変更されたとして無効になります。削除したいアイテムがある場合はリストを取得してください(一定に保たれます)、ループの繰り返しごとにアイテムからインデックスを取得する方が良いでしょう。これは 'QStandardItem'と' QStandardItemModel'を使用している方が簡単です。 –