如何在PyQt4中向动态QTableWidgetItem添加事件监听器?

时间:2012-06-18 10:30:54

标签: python qt event-handling pyqt4 qtablewidget

我是Python和Qt新手...

我正在开发一个GUI程序,它在开头使用QTableWidget显示数据列表。

使用setItem()方法将行插入表中。它们是QTableWidgetItem个对象。

现在我想允许用户点击选择某一行(QTableWidgetItem),我的程序将填充辅助QTableWidget

我了解到有一种叫做信号和插槽的东西。我会用那个吗? 还有使用installEventFilter()的示例,但它不适用于QTableWidgetItem

2 个答案:

答案 0 :(得分:6)

最简单的方法就是使用QTableWidget的itemClicked - 信号:

def handle_item_clicked(tableItem):
    #the callback, called when an item is clicked, with the item as an argument
    #populate the secondary table in some way

#register the callback with the QTableWidget
yourTableWidget.itemClicked.connect(handle_item_clicked)

您还可以使用currentItemChanged信号为您提供当前和之前的选择(例如,如果用户取消选择项目,您可以清除或隐藏辅助窗口小部件,在这种情况下,当前项目将为无)

答案 1 :(得分:1)

Qt没有"事件听众"。正如您所提到的,您可以通过connecting信号向插槽执行此类操作。

例如:

QObject.connect(myTableWidget, QtCore.SIGNAL("clicked()"), self.foobar)

当您点击self.foobar()时,这将导致调用方法myTableWidget。 foob​​ar函数可以检索which item is selected并根据它填充第二个小部件。

请注意,在connect的最后一个参数中,您不能使用括号(foobar()),只需使用方法名称!