我是Python和Qt新手...
我正在开发一个GUI程序,它在开头使用QTableWidget
显示数据列表。
使用setItem()
方法将行插入表中。它们是QTableWidgetItem
个对象。
现在我想允许用户点击选择某一行(QTableWidgetItem
),我的程序将填充辅助QTableWidget
。
我了解到有一种叫做信号和插槽的东西。我会用那个吗?
还有使用installEventFilter()
的示例,但它不适用于QTableWidgetItem
。
答案 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
。 foobar函数可以检索which item is selected并根据它填充第二个小部件。
请注意,在connect
的最后一个参数中,您不能使用括号(foobar()
),只需使用方法名称!