Pyqt5添加右键菜单
发布时间
阅读量:
阅读量
众所周知,在React中处理窗口点击事件时,默认情况下按下左键触发的是clicked事件。然而,在处理右键操作时,默认情况下按下右键触发的是customContextMenuRequested事件。
以初始化TreeView为例:
from PyQt5.QtWidgets import QTreeView, QBoxLayout, QMenu
from PyQt5.QtCore import Qt
from PyQt5.Qt import QStandardItemModel, QCursor
class FolderBar(QWidget):
def __init__(self):
super().__init__()
self.setMinimumSize(300, 600)
layout = QBoxLayout(QBoxLayout.TopToBottom)
self.tree_view = QTreeView()
self.tree_view.setModel(QStandardItemModel())
layout.addWidget(self.tree_view)
self.setLayout(layout)
self.tree_view.clicked.connect(...)
self.tree_view.setContextMenuPolicy(Qt.CustomContextMenu)
self.tree_view.customContextMenuRequested.connect(...)
AI写代码
首先需要配置setContextMenuPolicy为Qt.CustomContextMenu, 这样就可以实现右键事件的响应功能了。
customContextMenuRequested方法会将传入的处理函数与鼠标的点击位置信息进行结合。
例如如何显示菜单:
当customContextMenuRequested方法被调用时, 会将传入的处理函数与鼠标的点击位置信息进行结合。
def show_context_menu(self, pos):
menu = QMenu(self)
action = menu.addAction('add folder')
action.triggered.connect(...)
action = menu.addAction('rename')
action.triggered.connect(...)
action = menu.addAction('delete')
action.triggered.connect(...)
menu.exec_(QCursor.pos())
AI写代码
不执行menu.exec_菜单不会显示的。
全部评论 (0)
还没有任何评论哟~
