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