2013-06-14 4 views
0

У меня есть набор QTableview и QItem, который является редактором QCombobox, который я переопределял, потому что я хотел изменить его keyPressEvent. потому что, если я нажимаю клавишу, когда редактор qcombobox открыт, он выбирает следующую строку в редакторе, но я хочу, чтобы следующая строка в tableView была выбрана, не нужно менять строки в comboBox.При закрытии редактора QItemdelegate сдвигает элемент вправо

Так вот мой код события для QComboBox:

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

однако, когда я нажимаю клавишу вниз, элемент в Tableview справа от COMBOBOX будет выбран, почему закрытие результата редактор любое изменение выбора вообще? И как я могу это контролировать?

ответ

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) 

в основном, изменяющих currentIndex в tabelView изнутри события редактора.