Python 如何将事件侦听器添加到PyQt4中的动态QTableWidgetItem?
我是Python和Qt新手 我正在开发一个GUI程序,该程序在开始时使用Python 如何将事件侦听器添加到PyQt4中的动态QTableWidgetItem?,python,qt,event-handling,pyqt4,qtablewidget,Python,Qt,Event Handling,Pyqt4,Qtablewidget,我是Python和Qt新手 我正在开发一个GUI程序,该程序在开始时使用QTableWidget显示数据列表 使用setItem()方法将行插入表中。它们是QTableWidgetItem对象 现在我想允许用户单击选择某一行(QTableWidgetItem),我的程序将填充一个辅助的QTableWidget 我知道有一种东西叫做信号和插槽。我要用这个吗? 也有使用installEventFilter()的示例,但是它不适合QTableWidgetItemQt没有“事件侦听器”。正如您所提到的,
QTableWidget
显示数据列表
使用setItem()
方法将行插入表中。它们是QTableWidgetItem
对象
现在我想允许用户单击选择某一行(QTableWidgetItem),我的程序将填充一个辅助的QTableWidget
我知道有一种东西叫做信号和插槽。我要用这个吗?
也有使用installEventFilter()
的示例,但是它不适合QTableWidgetItem
Qt没有“事件侦听器”。正如您所提到的,您可以通过向插槽发送信号来执行这些操作
例如:
QObject.connect(myTableWidget, QtCore.SIGNAL("clicked()"), self.foobar)
这将导致在单击myTableWidget时调用方法self.foobar()
。foobar函数可以基于此检索并填充第二个小部件
请注意,在connect
的最后一个参数中,您不使用括号(foobar()
),只使用方法名称 Qt没有“事件侦听器”。正如您所提到的,您可以通过向插槽发送信号来执行这些操作
例如:
QObject.connect(myTableWidget, QtCore.SIGNAL("clicked()"), self.foobar)
这将导致在单击myTableWidget时调用方法self.foobar()
。foobar函数可以基于此检索并填充第二个小部件
请注意,在
connect
的最后一个参数中,您不使用括号(foobar()
),只使用方法名称 最简单的方法就是使用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
信号,该信号为您提供当前和以前的选择(例如,如果用户取消选择项目,您可以清除或隐藏辅助小部件,在这种情况下,当前项目将为无).最简单的方法就是使用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
信号,该信号为您提供当前和以前的选择(例如,如果用户取消选择某个项目,您可以清除或隐藏辅助小部件,在这种情况下,当前项目将为无)。您为什么使用这种古老的连接机制?@BlaXpirit:需要详细说明吗?古语在什么意义上???@Kuba:我想他认为l4mpi答案中使用的语法更好/更新。我不知道我自己,我一直在PyQt4中使用这个,它对我来说非常适合。你为什么使用这种古老的连接机制?@BlaXpirit:想详细说明一下吗?古语在什么意义上???@Kuba:我想他认为l4mpi答案中使用的语法更好/更新。我不知道我自己,我一直在PyQt4中使用它,它对我来说非常适合。