关闭QItemdelegate编辑器时将项目向右移动

时间:2013-06-14 04:31:38

标签: python pyqt qcombobox qitemdelegate

我有一个QTableview和QItem委托设置它,编辑器是我重新实现的QCombobox,因为我想修改它的keyPressEvent。因为如果我在qcombobox编辑器打开时按下键,它会选择编辑器中的下一行,但是我想要选择tableView中的下一行,不要让comboBox中的行改变。

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

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

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

1 个答案:

答案 0 :(得分: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。