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