2012-06-26 73 views
1

我想让我的QTableWidget调用一些函数,当我改变单元格中的值。pyqt QTableWidgetItem连接信号

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) 

我的问题是,它只要我进入小区之前,我还送价值变动它调用函数。它也会因为一些奇怪的原因而两次调用该函数。

回答

3

我认为你使用了错误的信号。 currentItemChanged指的是选择。不适用于数据更改的时间。尝试使用itemChanged

self.table.itemChanged.connect(someFunc) 

还请注意,我用的介绍,早在Qt的4.5 new-style signal slots。您不必再为指定C++签名而烦恼了。

至于你的信号多次发射,要么是因为每次选择改变时它都会发射,你没有意识到,或者你设法连接多次。

仅供参考,连接该信号老式的语法是:

QtCore.QObject.connect(
    self.table, 
    QtCore.SIGNAL('itemChanged(QTableWidgetItem*)'), 
    someFunc 
) 
+0

所以尝试你建议的行,我得到一个AttributeError:itemChanged。 – JLYK

+0

@JLYK:你运行的是什么版本的PyQt? – jdi

+0

pyqt4。我只是改变了你给我的行QtCore.QObject.connect(self.table,QtCore.SIGNAL('itemChanged(QTableWidgetItem *)'),someFunc)。它似乎大部分工作。仍然多次调用我的函数,但我想这是一组不同的问题。 – JLYK