从QTableView取消删除行

时间:2014-12-17 19:51:06

标签: python-3.x qtableview pyqt5 qsqltablemodel

我是PyQt5的新手,我正在使用QTableView。成功后知道如何删除选中的行.. 我已经google了很多知道如何取消删除表中选定的已删除行(& by 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(),但是这些方法从数据库中重新填充了行,并没有删除标记“!”;意思 - 正如我所说 - 在提交时,它将被删除。

请,任何帮助。

1 个答案:

答案 0 :(得分: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())