类之间的PyQt4信令

类之间的PyQt4信令

我有一个类家族(基于相同的父类),它们是QTableWidget中的数据单元(因此它们都是从QItemDelegate派生的)。

我试图创建一个信号,这些类可以传递给控制器​​以传达数据更改。

我找不到完成的正确组合(尽管进行了大量的实验和阅读)。这是我的课程结构:

基类:

class Criteria(QItemDelegate):
    def bind(self, update):
        self.connect(self,SIGNAL("criteriaChange(int,  int, QVariant)"),update)

    def emitCommitData(self):
        self.emit(SIGNAL("criteriaChange(int,  int, QVariant)"), self.Row, self.Col, self.getValue())


子类示例(如果需要更多信息,则只是相关部分-LMK):

class YesNo(Criteria):
    ....
    def createEditor(self, parent, option, index):
        self.comboBox = QComboBox(parent)
        for item in self.getChoices():
            self.comboBox.addItem(item)
        self.comboBox.activated.connect(self.emitCommitData)
        return self.comboBox
    ....


这是我的大师班的相关部分:

@pyqtSlot(int,  int, QVariant,  name='criteriaChanged')
def setItem(self,  row,  col,  item):
    print row, col, item.toString()     # TODO:  Remove when tested
    self.Data[row][col] = item.toString()

def addCriteria(self, row, cname, ctype):
    self.setDirty()
    c = YesNo(cname, "YesNo")
    c.bind(self.setItem)


上面的代码给出了“基础C ++对象已被删除”。我已经试过了:

def addCriteria(self, row, cname, ctype):
    self.setDirty()
    c = YesNo(cname, "YesNo")
    self.connect(c,SIGNAL("criteriaChange(int,  int, QVariant)"),self.setItem)


有什么建议么?我不必使用此方法,而是需要一种从单个控件中获取数据的方法。

TIA

麦克风

最佳答案

我为此感到非常尴尬。希望这会帮助其他人。

我没有为适当的对象调用Qt初始化:

class YesNo(Criteria):
    def __init__(self,  name,  ctype):
        Criteria.__init__(self)            # <<<<----- This was missing before
        self.Name = name
        self.Index = ctype




class Criteria(QItemDelegate):
    def __init__(self):
        QItemDelegate.__init__(self)       # <<<<----- This was missing before

关于python - 类之间的PyQt4信令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2004060/

10-13 00:21