PyQt 上下文菜单

Posted

技术标签:

【中文标题】PyQt 上下文菜单【英文标题】:PyQt context menu 【发布时间】:2009-10-06 08:44:15 【问题描述】:

我正在向 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() 是从 db 获取的播放列表名称,因为您可以看到只有一个函数 (addToPlaylistAction) 接收来自不同操作的所有触发器。在我的 addToPlaylistAction 函数中,如何确定点击了哪个菜单?

【问题讨论】:

【参考方案1】:

正确的方法是使用signal mapper:您可以将数据分配给每个发送者并使用该数据获取信号。

【讨论】:

我在pysnippet.blogspot.com/2010/06/…找到了一个很好的例子【参考方案2】:

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

【讨论】:

如果您使用 sender(),请注意您的函数始终作为插槽调用,以便 sender() 将返回有效的内容。

以上是关于PyQt 上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章

上下文菜单未使用 PyQt5 显示正确的语言

PyQt 上下文菜单快捷方式

PyQt5:如何从系统托盘图标上下文菜单启动窗口?

带有多个 qlineedit 小部件的 pyqt 上下文菜单

PyQt5 QTableWidget:右键选择列,并在上下文菜单中显示删除条目

通过上下文菜单为 PyQt 中的 QTableView 和 QTableWidget 传递一个实例