我创建了一个右键单击菜单函数,其中所有右键单击函数都链接到一个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的一般(也是优选的(用法是当它们的CCD_ 2信号被发射时做一些事情。
这允许保留一个始终执行其创建目的的QAction,同时可以将该操作添加到需要的任何位置(可以是菜单、工具栏,甚至键盘快捷键(,而无需不断检查是否触发了操作。
在以下示例中,addData()
函数在从菜单激活时和单击someOtherButton时都会被调用。
self.actionAdd_Data = QAction('Add data', self)
self.actionAdd_Data.triggered.connect(self.addData)
self.contextMenu.addAction(self.actionAdd_Data)
# ...
self.someOtherButton.clicked.connect(self.actionAdd_Data.trigger)
def initContextMenu(self, pos):
self.contextMenu.exec_(self.pushButton.mapToGlobal(pos))
def addData(self):
# do something