closeEditor принимает только 2 аргумента (2 дано)
Кто-нибудь знает, почему я получаю следующую ошибку:
TypeError: closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint) only accepts 2 arguments, 2 given!
Я использую QStyledItemDelegate, чтобы иметь больше контроля над таблицей (QTableWidget()), используя мой собственный QLineEdit. Ошибка возникает, когда я покидаю фокус ячейки таблицы, которая контролируется с помощью пользовательского редактора.
Приведенный ниже код основан на примере PySide stardelegate.py:
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)
НТН