• 11005阅读
  • 1回复

求教python中pyqt4的QTableWidget的connect问题 [复制链接]

上一主题 下一主题
离线wolong1185
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-02
— 本帖被 XChinux 执行加亮操作(2010-09-21) —
初学者请教。
请问如何将QTableWidget中某一栏中的双击操作与自己写的函数相连呢??
比如我有如下代码,希望将某一栏的双击操作和自己定义的function函数连接起来。
self.tableWidget.connect(self.tableWidget, QtCore.SIGNAL(QtGui.QTableWidget.itemDoubleClicked()), self.function)
但是会报出TypeError: native Qt signal is not callable这样的错误。
离线cyesh
只看该作者 1楼 发表于: 2010-05-30
QTabelWidget有个信号cellDoubleClicked (int,int),应该将信号与你的槽(这是你的函数!)连接,改成这样:

self.tableWidget.cellDoubleClicked.connect(self.function)

这是使用新型的信号、槽连接方式,所以还要在定义你自己的槽的时候显式地用python修饰符:

@pyqtSlot(int,int)
def function(self,row,column):
      ............

如果是旧式连接,如果我没记错,大概应该是这样:
self.connect(self.tableWidget, QtCore.SIGNAL('itemDoubleClicked(int,int)'), self.function)
也就是说,Qt的原生槽是C++形式的,要引用它应该使用SIGNAL转换,并且把槽的C++声明作为字串传给型参!

==>你的错误在于:
1、C++的槽引用错误。
2、QTableWidget的cell和item概念不同。
一个item只有当创建并摆放到Table时才有效,而cell就是table上的那些格子。你把槽连到item上,可能在某个cell位置没有摆放item,所以双击是无效的——不过不会异常。
快速回复
限100 字节
 
上一个 下一个