QTableView:防止用户离开特定行

时间:2019-01-17 10:16:47

标签: pyqt qtableview qitemselectionmodel

如果保存操作未成功完成,则无法阻止用户窗体更改当前选择。我可以使用QTableView的选择模型的currentRowChanged信号重新选择一行,但是尽管选择发生了变化,但是蓝色选择指示器却没有。请参见下图。

示例:在下面的图像中,用户试图添加新行nr537。但是保存操作出现错误,我不希望用户在删除记录之前就离开537行。或编辑然后保存

问题:如何将蓝线移至当前选择? (当前选择是最后一行)(将QTableView的Selection Behavior设置为选择行)

enter image description here

这是我到目前为止获得的代码:

    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())

1 个答案:

答案 0 :(得分:0)

替换此:

self.__ui.tableView.clearSelection()
self.__ui.tableView.selectRow(previous.row())

与此:

QtCore.QTimer.singleShot(0.00001, lambda: self.__ui.tableView.selectRow(previous.row()))

产生了预期的结果