我有一个类家族(基于相同的父类),它们是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/