嵌入式复选框在QTableWidget中发出的信号

时间:2012-07-19 20:10:15

标签: python pyqt pyqt4

我目前有一个设置,我试图在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,并且不会更改复选框状态来更改数据吗?

先谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

或更好,请使用the new style connections

self.tblData.itemChanged.connect(self.updatePlot)

答案 1 :(得分:0)

我猜你必须使用ItemClicked信号。由于itemChanged信号是在数据更改时发出的,而数据可能是文本。