QT创建QMenu并且在点击某个按钮后显示出来
时间: 2024-03-08 09:51:34 浏览: 18
在 Qt 中,你可以通过以下步骤创建一个 `QMenu` 并在点击某个按钮后显示出来:
1. 创建一个 `QMenu` 对象并添加菜单项。
```python
menu = QMenu(self)
menu.addAction("Item 1")
menu.addAction("Item 2")
```
在这个例子中,我们创建了一个 `QMenu` 对象 `menu` 并添加了两个菜单项。
2. 创建一个按钮,并为它连接一个槽函数。
```python
button = QPushButton("Show Menu", self)
button.clicked.connect(self.showMenu)
```
在这个例子中,我们创建了一个按钮 `button` 并为它连接了一个槽函数 `showMenu()`。
3. 在槽函数 `showMenu()` 中调用 `QMenu.exec()` 方法显示菜单。
```python
def showMenu(self):
menu.exec_(self.mapToGlobal(self.sender().pos()))
```
在这个例子中,我们在槽函数 `showMenu()` 中调用了 `menu.exec_()` 方法显示菜单。`mapToGlobal()` 方法将按钮的位置映射到全局坐标系中,这样可以在按钮的位置弹出菜单。
完整的代码如下所示:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMenu
from PyQt5.QtCore import Qt
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建菜单
menu = QMenu(self)
menu.addAction("Item 1")
menu.addAction("Item 2")
# 创建按钮
button = QPushButton("Show Menu", self)
button.clicked.connect(self.showMenu)
# 设置窗口属性
self.setGeometry(100, 100, 300, 200)
self.setWindowTitle("QMenu Example")
def showMenu(self):
menu.exec_(self.mapToGlobal(self.sender().pos()))
if __name__ == '__main__':
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
```
在这个例子中,我们创建了一个窗口 `MyWindow`,其中包含了一个按钮 `button` 和一个菜单 `menu`,点击按钮后菜单就会显示出来。