代码之家  ›  专栏  ›  技术社区  ›  Rhdr

qTableView:阻止用户从特定行导航

  •  0
  • Rhdr  · 技术社区  · 6 年前

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

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

    问题:如何将蓝线移动到当前所选内容?(当前选择是最后一行)(qTableView的选择行为设置为选择行)

    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 回复  |  直到 6 年前
        1
  •  0
  •   Rhdr    6 年前

    替换此:

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

    用这个:

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

    产生了预期的结果