Проверка QCombox на вкладке - PullRequest
0 голосов
/ 12 ноября 2018

Я использую редактируемый QCombobox с Completer и Model, когда текст не совпадает ни с одной записью в модели, и я нажимаю Enter, когда Combobox очищается. Когда я использую Tab, он не проверяется, находится ли запись в модели, а просто сохраняется и записывается в модель, сопоставленную с ней через QDataWidgetMapper. Я попытался решить проблему с помощью создания подкласса ComboBox и введения KeyEventFilter и / или eventFilter для обоих методов, которые не работали, событие просто не было перехвачено. KeyeventFilter добился небольшого успеха, захватив событие enter.

def eventFilter(self, obj, e):
        if e.type() == QEvent.ShortcutOverride:
            logger.debug(e.key(), Qt.Key_Tab)
            if e.key() == Qt.Key_Tab:
                        if not self.model().contains(self.currentText()):
                            # contains is PseudoCode I use something else 
                            # from my subclass of the QAbstractTableModel
                            self.setCurrentText("")
                            return True
            else:
                pass
        else:
            pass
        return QComboBox.eventFilter(self, obj, e)

Я не могу найти никакого решения для этого. Может быть, вы можете помочь C код должен быть в порядке.

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