如果保存操作未成功完成,则无法阻止用户窗体更改当前选择。我可以使用QTableView的选择模型的currentRowChanged信号重新选择一行,但是尽管选择发生了变化,但是蓝色选择指示器却没有。请参见下图。
示例:在下面的图像中,用户试图添加新行nr537。但是保存操作出现错误,我不希望用户在删除记录之前就离开537行。或编辑然后保存
问题:如何将蓝线移至当前选择? (当前选择是最后一行)(将QTableView的Selection Behavior设置为选择行)
这是我到目前为止获得的代码:
def __init__(self, parent):
...
self.__tableViewSelectionModel = self.__ui.tableView.selectionModel()
self.__tableViewSelectionModel.currentRowChanged.connect(self.rowChanged)
def rowChanged(self, current=None, previous=None):
if save() == True:
self.__ui.tableView.clearSelection()
self.__ui.tableView.selectRow(previous.row())
答案 0 :(得分:0)
替换此:
self.__ui.tableView.clearSelection()
self.__ui.tableView.selectRow(previous.row())
与此:
QtCore.QTimer.singleShot(0.00001, lambda: self.__ui.tableView.selectRow(previous.row()))
产生了预期的结果