0

我目前有一个设置,我试图将复选框嵌入到QTableWidget. 我通过以下方式设置复选框单元格:

chkbox1 = QTableWidgetItem()
chkbox1.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
chkbox1.setCheckState(Qt.Unchecked)
chkbox2 = QTableWidgetItem()
chkbox2.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
chkbox2.setCheckState(Qt.Unchecked)
self.tblData.setItem(i, 0, chkbox1)
self.tblData.setItem(i, 1, chkbox2)

这似乎工作正常,但是我似乎无法捕捉到选中或取消选中框时发出的信号。我试过了:

 self.connect(self.tblData, SIGNAL('itemChanged(QTableWidgetItem)'), self.updatePlot)

但这无济于事。作为测试,我已经将一个按钮单击连接到相同的方法,它工作正常,所以我知道这只是我错过了一个信号。

据我了解,itemChanged应该在任何数据更改时发出,并且不会更改复选框状态来更改数据?

提前感谢您的帮助。

4

2 回答 2

1

信号签名错误。它应该是itemChanged(QTableWidgetItem *)(注意*):

self.connect(self.tblData, SIGNAL('itemChanged(QTableWidgetItem *)'), self.updatePlot)

或者更好的是,使用新样式的连接

self.tblData.itemChanged.connect(self.updatePlot)
于 2012-07-19T22:24:20.877 回答
0

我想您必须改用 ItemClicked 信号。由于 itemChanged 信号在数据更改时发出,并且数据可能是文本。

于 2012-07-19T20:27:50.760 回答