当文本与模型中的任何条目都不匹配并且我按Enter键时,我正在使用带有完成器和模型的可编辑QCombobox,并且清除了Combobox。当我使用Tab时,不检查条目是否在Model中,而是将其保留并写入通过QDataWidgetMapper映射到它的模型中。我尝试通过子类化ComboBox并为它没有起作用的两个方法引入KeyEventFilter和/或eventFilter来解决问题,而这两个方法都没有被发现。通过捕获enter事件,keyeventFilter取得了一些成功。
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代码就可以了。