QTableView: запретить пользователю переходить от специальной строки - PullRequest
0 голосов
/ 17 января 2019

У меня возникли проблемы с предотвращением изменения текущей формы в пользовательской форме, если действие сохранения не было выполнено успешно. Я могу повторно выбрать строку, используя сигнал currentRowChanged моделей выбора QTableView, но, хотя выбор изменяется, синий индикатор выбора не делает. Смотрите изображение ниже.

Пример. На изображении ниже пользователь попытался добавить новую строку с номером 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 Ответ

0 голосов
/ 17 января 2019

Замена этого:

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

с этим:

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

дал желаемый результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...