QMenu.exec()打开的如何关闭
时间: 2024-03-08 08:51:30 浏览: 101
要关闭通过 `QMenu.exec()` 方法打开的菜单,你可以在菜单项的槽函数中调用 `QMenu.close()` 方法。例如:
```python
menu = QMenu()
menu.addAction("Item 1", self.doSomething)
menu.addAction("Item 2", self.doSomething)
def doSomething(self):
# do something
menu.close()
```
在这个例子中,我们为每个菜单项都连接了一个槽函数 `doSomething()`,在槽函数中执行一些操作后,调用 `menu.close()` 方法关闭菜单。这样,当用户点击菜单项时,菜单就会自动关闭。
如果你想在其他地方关闭菜单,你可以在其他部分的代码中调用 `QMenu.close()` 方法,或者将菜单保存为实例变量,然后在需要关闭菜单的地方调用 `close()` 方法。例如:
```python
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.menu = QMenu()
self.menu.addAction("Item 1", self.doSomething)
self.menu.addAction("Item 2", self.doSomething)
def doSomething(self):
# do something
self.menu.close()
def mousePressEvent(self, event):
if event.button() == Qt.RightButton:
self.menu.exec_(event.globalPos())
def closeEvent(self, event):
self.menu.close() # 在窗口关闭时关闭菜单
```
在这个例子中,我们将菜单保存为实例变量 `self.menu`,在菜单项的槽函数 `doSomething()` 中调用 `close()` 方法关闭菜单,在鼠标右键事件处理函数 `mousePressEvent()` 中调用 `exec_()` 方法打开菜单,在窗口关闭事件处理函数 `closeEvent()` 中调用 `close()` 方法关闭菜单。这样,无论在哪个地方关闭窗口,菜单都会被正确地关闭。
阅读全文