问题描述
我创建了一个右键单击菜单功能,其中所有右键单击功能都链接到QAction
例如:
self.contextMenu = QtWidgets.QMenu(self)
self.contextMenu.addAction(self.actionAdd_Data)
self.pushButton.customContextMenuRequested.connect(self.initContextMenu)
def initContextMenu(self,event):
action = self.contextMenu.exec_(self.pushButton.mapToGlobal(event))
if action == self.actionAdd_Data:
print("Do something")
是否可以模拟单击右键?类似于pushButton.click(),但用于QAction。
我尝试过
self.pushButton2.clicked.connect(self.actionAdd_Data.trigger)
但是什么也没发生。
有人可以帮忙吗?谢谢。
解决方法
虽然使用QMenu.exec_()
返回的操作对于“即时”创建的菜单效果很好,但是QAction的一般(也是首选)用法是在{{ 1}}信号发出。
这可以保留一个始终执行创建操作的QAction,同时能够在需要的任何位置(可以是菜单,工具栏甚至是键盘快捷键)添加该操作,而无需不断检查是否那个动作已被触发。
在下面的示例中,从菜单中激活triggered()
函数并单击 someOtherButton 时,都会调用该函数。
addData()