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)

НТН

Другие вопросы по тегам