【问题标题】:undelete row from QTableView从 QTableView 中取消删除行
【发布时间】:2014-12-17 19:51:05
【问题描述】:

我是 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() 但是这些方法从数据库中重新填充了行并且没有删除标志“!”;意思是 - 正如我所料 - 在提交时,它将被删除。

请帮忙。

【问题讨论】:

    标签: python-3.x qtableview pyqt5 qsqltablemodel


    【解决方案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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 2018-02-02
      • 2013-10-01
      • 2020-11-21
      • 2016-12-12
      • 2018-06-15
      相关资源
      最近更新 更多