1

セルの値を変更するときに QTableWidget に関数を呼び出させようとしています。

self.table = QtGui.QTableWidget()  
tableItem = QtGui.QTableWidgetItem( str(attr.GetValue()) )
self.table.setItem(row, 1, tableItem )
QtCore.QObject.connect(self.table, QtCore.SIGNAL('currentItemChanged(QTableWidgetItem*, QTableWidgetItem*)'), someFunc)  

私の問題は、値を変更する前にセルに入るとすぐに関数が呼び出されることです。また、奇妙な理由で関数を2回呼び出します。

4

1 に答える 1

4

間違った信号を使用していると思います。currentItemChanged選択を指します。データが変更されたときではありません。使ってみてくださいitemChanged:

self.table.itemChanged.connect(someFunc) 

また、Qt 4.5 で導入された新しいスタイルのシグナル スロットを使用していることにも注意してください。C++ 署名を指定するという面倒なことはもう必要ありません。

信号が複数回発火したのは、選択が変更されるたびに発火していて気付かなかったか、または複数回接続できたためです。

参考までに、この信号を接続するための古いスタイルの構文は次のとおりです。

QtCore.QObject.connect(
    self.table, 
    QtCore.SIGNAL('itemChanged(QTableWidgetItem*)'), 
    someFunc
) 
于 2012-06-26T01:23:22.450 に答える