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
マイク