Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt上下文菜单_Python_Qt_Pyqt4 - Fatal编程技术网

Python PyQt上下文菜单

Python PyQt上下文菜单,python,qt,pyqt4,Python,Qt,Pyqt4,我正在向QTableWidget动态添加上下文菜单: playlistContenxt = QAction("Add to %s" % (currentItem.text()), self.musicTable) playlistContenxt.setData(currentData) self.connect(playlistContenxt, SIGNAL("triggered()"), self.addToPlaylistAction) self.musicTable.addAction

我正在向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函数中,如何确定单击了哪个菜单?

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

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

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