PyQt上下文菜单

3

我正在动态地为QTableWidget添加上下文菜单:

playlistContenxt = QAction("Add to %s" % (currentItem.text()), self.musicTable)
playlistContenxt.setData(currentData)
self.connect(playlistContenxt, SIGNAL("triggered()"), self.addToPlaylistAction)
self.musicTable.addAction(playlistContenxt)

currentItem.text() 是从数据库中获取的播放列表名称,可以看到只有一个函数(addToPlaylistAction)接收来自不同操作的所有触发器。在我的 addToPlaylistAction 函数中,如何确定已单击哪个菜单?

2个回答

5

正确的方法是使用信号映射器:您可以为每个发送器分配数据,并获得带有该数据的信号。


我在http://pysnippet.blogspot.com/2010/06/qsignalmapper-at-your-service.html找到了一个很好的例子。 - jung rhew

3

您可以使用QAction.setData设置一些数据,以便插槽知道要添加到哪个播放列表。然后在插槽中,您可以调用self.sender()获取触发信号的操作,并使用action.data()将数据取回。


如果你使用了sender(),请注意确保你的函数始终被调用为一个slot,这样sender()才会返回一个有效的东西。 - Kaleb Pederson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接