0

我设置了一个 QTableview 和 QItem 委托,编辑器是一个我重新实现的 QCombobox,因为我想修改它的 keyPressEvent。因为如果我在打开 qcombobox 编辑器时按下键,它会选择编辑器中的下一行,但我希望应该选择 tableView 中的下一行,不希望组合框中的行发生变化。

所以这是我的 QComboBox 事件代码:

def keyPressEvent(self, event):
    key = event.key()
    if key == Qt.Key_Down:
        self.close()
    else:
        QComboBox.keyPressEvent(self, event)

但是,当我按下键时,正在选择组合框右侧的 tableView 中的项目,为什么关闭编辑器会导致任何选择更改?我怎么能控制它?

4

1 回答 1

0

所以我不知道它为什么会这样,但我修改了我的代码来控制它的行为,如下所示:

def keyPressEvent(self, event):
    key = event.key()
    if self.widget_parent:
        if key == Qt.Key_Down:
            index = self.widget_parent.currentIndex()
            self.close()
            index = self.widget_parent.model().index(index.row() + 1, index.column())
            self.widget_parent.setFocus()
            self.widget_parent.setCurrentIndex(index)
            self.widget_parent.edit(index)    
    else:
        QComboBox.keyPressEvent(self, event)

基本上是从编辑器事件内部更改 tabelView 的 currentIndex 。

于 2013-06-14T20:57:00.707 回答