0

我是 PyQt5 的新手,我正在使用 QTableView。在成功知道如何删除选定的行之后..我已经搜索了很多以了解如何从表中取消删除选定的已删除行(以及从 TableModel 中按顺序)但没有结果...

到目前为止,我可以根据标题数据知道该行是否标记为已删除:

if self.items_Model.itemsModel.headerData(row.row(), QtCore.Qt.Vertical) == "!":
    # self.items_Model.itemsModel.revertRow(row.row())
    self.items_Model.itemsModel.selectRow(row.row())

我尝试了 revertRow(rowIndex) 和 selectRow() 但这些方法从数据库中重新填充了行并且没有删除标志“!”;意思是 - 正如我所料 - 在提交时,它将被删除。

请,任何帮助。

4

1 回答 1

1

奇怪的是这里没有人回答我的问题...

经过几次尝试......包括关闭编辑器并重新启动它......

看来要将行返回到其先前的状态——在这种情况下是“未标记为已删除”——我们必须使用“revert”方法。但是标记“!” 除非我们删除要取消删除的行的焦点,即选择另一行,否则不会更改。

这是我的删除方法的全部代码:

def _deleteSelectedRows(self):
    select = self.mainForm.tblItems.selectionModel()

    if select.hasSelection():
        selectedRows = select.selectedRows()

        for r in selectedRows:
            rowFlag = self.items_Model.itemsModel.headerData(r.row(), QtCore.Qt.Vertical)
            if rowFlag == "!":
                self.items_Model.itemsModel.revertRow(r.row())
            else:
                self.items_Model._deleteRowByIndex(r.row())
于 2014-12-23T08:29:26.177 回答