pyqt5-QMenu菜单组件

1、介绍

菜单组件。有两种场景:

  • 窗口的菜单栏设置一个或多个QMenu
  • 其他组件绑定右键菜单,弹出一个QMenu
class QMenu(QWidget):
    """
    QMenu(parent: QWidget = None)
    QMenu(str, parent: QWidget = None)
    """
    def __init__(self, *__args):
        pass
  • parent是必须设置的,如果是窗口菜单则设置为QMenuBar的组件,右键菜单设置为触发绑定的组件
  • str是在上级组件中显示该menu的文本,比如QMenuBar中的菜单,或者菜单的菜单

2、方法

(1)addAction

addAction(self, QAction)
addAction(self, str) -> QAction
addAction(self, QIcon, str) -> QAction
addAction(self, str, PYQT_SLOT, shortcut: Union[QKeySequence, QKeySequence.StandardKey, str, int] = 0) -> QAction
addAction(self, QIcon, str, PYQT_SLOT, shortcut: Union[QKeySequence, QKeySequence.StandardKey, str, int] = 0) -> QAction
  • 添加动作项
  • 会返回添加的动作项对象,可以直接使用

(2)addMenu

addMenu(self, menu: QMenu) -> QAction
addMenu(self, title: str) -> QMenu
addMenu(self, icon: QIcon, title: str) -> QMenu
  • 添加子菜单
  • 会返回添加的菜单对象,可以直接使用

(3)addSeparator

  • 添加分隔符,即一条横线

(4)clear

  • 清除
exec_(self) -> QAction
exec_(self, p: QPoint, action: typing.Optional[QAction] = None) -> QAction
exec_(actions: Iterable[QAction], pos: QPoint, at: typing.Optional[QAction] = None, parent: typing.Optional[QWidget] = None) -> QAction
  • 加载显示菜单
  • 如果没有任何参数,那么菜单将会在屏幕的右上角显示。并且,多次触发菜单,那么各菜单会同时存在。除非点击菜单选项逐一关闭,或者直接点击其它区域关闭所有菜单
  • 设置QPoint参数,会在设置的位置显示。并且自动关闭上一次生成的菜单

5、事件

triggered(self, QAction) 
  • 触发事件,携带QAction对象,即触发的项。
  • 可以是QMenu直接管理的QAction,也可以是子QMenu管理的QAction。点击子菜单本身,不会触发
hovered(self, action: QAction) [signal]
  • 在组件内移动,会持续触发
  • 如果要使用的话,建议搭配状态量记录当前action,只有其变化时才真正调用业务方法

 

mouseDoubleClickEvent(self, a0: QMouseEvent)
  • 鼠标双击事件
mouseMoveEvent(self, a0: QMouseEvent)
mouseReleaseEvent(self, a0: QMouseEvent)

 

posted @ 2023-10-02 00:38  挖洞404  阅读(209)  评论(0编辑  收藏  举报