在QStyledItemDelegate中使用signal closeEditor的正确方法?

2024-06-26 14:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我将重写QStyledItemDelegate类并重新实现eventFilter函数,以便在检测到按Tab键时自定义编辑器行为。但是,以下方法不起作用。调用closeEditor信号的正确方法是什么?在

class CustomDelegate(QStyledItemDelegate):
    def __init__(self, parent=None):
        super(CustomDelegate, self).__init__(parent)

    def eventFilter(self, editor, event):
        if (event.type() == QEvent.KeyPress and
            event.key() == Qt.Key_Tab):
            print "Tab captured in editor"
            self.commitData.emit(editor) #This is working
            self.closeEditor.emit(editor) #This does not seem to do anything??
            return True
        return QStyledItemDelegate.eventFilter(self,editor,event)

Tags: 方法selfeventreturninitdefthistab
1条回答
网友
1楼 · 发布于 2024-06-26 14:30:39

这是一个老问题,但我遇到了同样的问题,找到了这个问题。在

我通过改变

self.closeEditor.emit(editor)

行至

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

commitData调用将setModelData。如果不调用closeEditorsetModelData将在编辑器关闭时再次调用。在

相关问题 更多 >