在QTableView + QAbstractItemModel中删除多行

时间:2016-05-02 08:31:35

标签: python pyqt

我在删除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)

有没有办法避免在循环的每次迭代后重新计算所有索引?

1 个答案:

答案 0 :(得分:1)

我找到了一个非常简单的解决方案,我只是迭代我列表的reversed,这很好:)

def on_delete_clicked(self):
    for selected_index in reversed(self._view.get_selected_rows()):
        self._view.delete_obj(selected_index)