在PyQt5中正确使用commitData

时间:2017-07-11 18:52:15

标签: python pyqt pyqt5

我的基本问题是我不能让self.commitData.emit()在PyQt5中工作,因为它在PyQt4上工作。 指我的

的子类

QItemDelegate和self.commitData.emit(编辑器)引发错误:

  

self.commitData.emit(editor)AttributeError:未定义信号   #class'filterDelegate'的第一个超类

我的子类到QItemDelegate的部分如下所示:

自定义代理:

class filterDelegate(QItemDelegate):
    def __init__(self,parent=None):
        super(filterDelegate,self).__init__(parent)
        self.parameterlist=parent.parameterlist
        self.parent=parent

    def dataCommit(self):
        index=self.mindex
        model=index.model()
        editor=self.sender()
        lastrow=model.rowCount()-1              
        if isinstance(editor,(QComboBox)):
            self.commitData.emit(editor)
            self.closeEditor.emit(editor,QAbstractItemDelegate.NoHint)

错误发生在包含self.commitData.emit(editor)和的行 PyCharm将self.commitData.emit显示为没有属性emit。 此外,为上面的self.commitData.emit(编辑器)替换QItemDelegate.commitData.emit(编辑器)会产生错误:

  

AttributeError:'PyQt5.QtCore.pyqtSignal'对象没有属性   'emit'这可能与之前看到的错误相同。

奇怪的是,这一切都适用于PyQt4但不适用于PyQt5。

关于如何为PyQt5发出commitData信号的任何想法都是受欢迎的,我在Google上一小时后找不到答案。

非常感谢

0 个答案:

没有答案