PyQt上下文菜单

3 投票
2 回答
2323 浏览
提问于 2025-04-15 14:51

我正在给一个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

正确的方法是使用 信号映射器:你可以给每个发送信号的对象分配一些数据,然后接收到的信号就会带着这些数据。

3

你可以用 QAction.setData 来设置一些数据,这样在处理事件的时候就能知道要添加到哪个播放列表。然后在处理事件的地方,你可以调用 self.sender() 来获取触发这个事件的动作,再用 action.data() 来获取之前设置的数据。

撰写回答