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 に答える