QTableWidget中嵌入式复选框发出的信号 [英] Signals Emitted by Embedded Checkbox in QTableWidget
问题描述
我目前有一个设置,我试图在 QTableWidget
中嵌入复选框.我正在以下列方式设置复选框单元格:
I currently have a setup where I am trying to embed checkboxes in a QTableWidget
. I am setting the checkbox cells in the following way:
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)
这似乎工作正常,但是我似乎无法捕捉到选中或取消选中某个框时发出的信号.我试过了:
This seems to work fine, however I cannot seem to catch the signal emitted whenever a box is checked or unchecked. I've tried:
self.connect(self.tblData, SIGNAL('itemChanged(QTableWidgetItem)'), self.updatePlot)
但这没有任何作用.作为测试,我已将按钮单击连接到相同的方法,并且它工作正常,所以我知道这只是我错过了一个信号.
But this doesn't do anything. As a test, I've connected a button click to the same method, and it works fine, so I know it's just that I'm missing a signal.
据我所知,itemChanged
应该在任何数据发生变化时发出,并且不会改变复选框状态来改变数据吗?
From what I understand, itemChanged
should be emitted any time any data is changed, and isn't changing the checkbox state changing the data?
预先感谢您的帮助.
推荐答案
信号签名错误.它应该是 itemChanged(QTableWidgetItem *)
(注意 *
):
Signal signature is wrong. It should be itemChanged(QTableWidgetItem *)
(Note the *
):
self.connect(self.tblData, SIGNAL('itemChanged(QTableWidgetItem *)'), self.updatePlot)
或者更好,使用新样式连接:
self.tblData.itemChanged.connect(self.updatePlot)
这篇关于QTableWidget中嵌入式复选框发出的信号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!