0

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

示例:在下图中,用户尝试添加新行 nr 537。但保存操作出错,我不希望用户在删除或编辑记录然后保存之前离开第 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())
4

1 回答 1

0

替换这个:

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

有了这个:

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

产生了预期的结果

于 2019-01-17T14:18:11.257 回答