我在删除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)
有没有办法避免在循环的每次迭代后重新计算所有索引?
答案 0 :(得分:1)
我找到了一个非常简单的解决方案,我只是迭代我列表的reversed
,这很好:)
def on_delete_clicked(self):
for selected_index in reversed(self._view.get_selected_rows()):
self._view.delete_obj(selected_index)