QT QMenu 定制菜单
时间: 2023-06-12 14:06:49 浏览: 142
在Qt中,我们可以使用QMenu类来创建自定义菜单。QMenu是一个弹出式菜单,可以包含多个QAction和其他子菜单。
以下是创建自定义菜单的步骤:
1. 创建QMenu对象
```python
menu = QMenu()
```
2. 创建QAction对象
```python
action1 = QAction("Action 1", self)
action2 = QAction("Action 2", self)
```
3. 将QAction对象添加到QMenu中
```python
menu.addAction(action1)
menu.addAction(action2)
```
4. 显示QMenu对象
```python
menu.exec_(self.mapToGlobal(event.pos()))
```
其中,event是鼠标右键点击事件,mapToGlobal()函数将当前坐标映射到全局坐标系。
完整代码示例:
```python
from PyQt5.QtWidgets import QMainWindow, QMenu, QAction
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 200)
self.setWindowTitle('Custom Menu')
# 创建QMenu对象
menu = QMenu(self)
# 创建QAction对象
action1 = QAction("Action 1", self)
action2 = QAction("Action 2", self)
# 将QAction对象添加到QMenu中
menu.addAction(action1)
menu.addAction(action2)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(lambda event: menu.exec_(self.mapToGlobal(event.pos())))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在上述示例中,我们将自定义菜单关联到了右键点击事件上,并在菜单中添加了两个QAction对象。你可以根据需要添加更多的QAction和子菜单。
阅读全文