2013-07-10 3 views
1

Кто-нибудь знает, почему я получаю сообщение об ошибке следовать:closeEditor только принимает 2 аргумента (2 дано)

TypeError: closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint) only accepts 2 arguments, 2 given! 

Я использую QStyledItemDelegate так, что у меня больше контроля над столом (QTableWidget()) с использованием мой собственный QLineEdit. Ошибка возникает, когда я оставил фокус ячейки таблицы, которая управляется с помощью специального редактора.

Ниже код базируется на PySide stardelegate.py example:

class EditDelegate(QStyledItemDelegate): 
    def __init__(self, parent=None): 
      super(EditDelegate, self).__init__(parent) 
    def createEditor(self, parent, option, index): 
      result = index.column() 
      if result==0: 
        editor = TheEditor(parent) 
        editor.editingFinished.connect(self.commitAndCloseEditor) 
        return editor 
      else: 
        return QStyledItemDelegate.createEditor(self, parent, option, index) 
    def commitAndCloseEditor(self): 
      editor = self.sender() 
      self.commitData.emit(editor) 
      self.closeEditor.emit(editor) 
class TheEditor(QLineEdit): 
    editingFinished = Signal() 
    def __init__(self, parent=None): 
      super(TheEditor, self).__init__(parent) 
      self.setAutoFillBackground(True) 
      self.setValidator(QIntValidator(0,999999999, self)) 
    def focusOutEvent(self, event): 
      self.editingFinished.emit() 

ответ

1

Потому что, вы должны излучать closeEditor сигнал, говорящий намек желаемого: EditNextItem, EditPreviousItem уплотнительное NoHint.

self.closeEditor.emit(editor, QAbstractItemDelegate.NoHint) 

НТН

Смежные вопросы