PySide6.QtWidgets.QMenu¶
- class QMenu¶
QMenu
类提供了一个菜单小部件,用于菜单栏、上下文菜单和其他弹出菜单。更多…概要¶
属性¶
iconᅟ
- 菜单的separatorsCollapsibleᅟ
- 是否应该折叠连续的分离器tearOffEnabledᅟ
- 菜单是否支持被撕下titleᅟ
- 菜单的标题toolTipsVisibleᅟ
- 菜单操作的提示是否应该可见
方法¶
def
__init__()
def
actionAt()
def
actionGeometry()
def
activeAction()
def
addAction()
def
addMenu()
def
addSection()
def
addSeparator()
def
clear()
def
columnCount()
def
defaultAction()
def
exec()
def
exec_()
def
icon()
def
insertMenu()
def
insertSection()
def
isEmpty()
def
menuAction()
def
popup()
def
setIcon()
def
setTitle()
def
title()
虚拟方法¶
信号¶
def
aboutToHide()
def
aboutToShow()
def
hovered()
def
triggered()
静态函数¶
def
exec()
def
menuInAction()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
菜单小部件是一个选择菜单。它可以是菜单栏中的下拉菜单,也可以是独立的上下文菜单。当用户点击相应的项目或按下指定的快捷键时,菜单栏会显示下拉菜单。使用
addMenu()
将菜单插入菜单栏。上下文菜单通常通过某些特殊的键盘键或右键点击来调用。它们可以异步执行,使用popup()
,或同步执行,使用exec()
。菜单也可以响应按钮按下而调用;这些菜单与上下文菜单类似,只是调用方式不同。操作¶
菜单由一系列操作项组成。操作通过addAction()、
addActions()
和insertAction()
函数添加。操作以垂直方式表示,并由QStyle
渲染。此外,操作可以有一个文本标签,一个可选的图标绘制在最左侧,以及快捷键序列,如“Ctrl+X”。菜单中现有的操作可以通过
actions()
找到。有四种类型的操作项:分隔符、显示子菜单的操作、小部件和执行操作的操作。分隔符通过
addSeparator()
插入,子菜单通过addMenu()
插入,所有其他项都被视为操作项。在插入操作项时,您通常需要指定一个接收者和一个槽。每当项目被触发时,接收者将被通知。此外,
QMenu
提供了两个信号,triggered()
和hovered()
,这些信号表示从菜单中触发的 QAction。你可以使用
clear()
清除菜单,并使用removeAction()
移除单个操作项。一个
QMenu
也可以提供一个可撕下的菜单。可撕下的菜单是一个包含菜单副本的顶级窗口。这使得用户可以将常用的菜单“撕下”并将其放置在屏幕上的方便位置。如果你希望某个特定菜单具有此功能,可以使用setTearOffEnabled()
插入一个可撕下手柄。在使用可撕下菜单时,请记住这个概念在Microsoft Windows上通常不使用,因此一些用户可能不熟悉它。考虑使用QToolBar
代替。可以使用
QWidgetAction
类将小部件插入菜单中。此类的实例用于保存小部件,并通过接受QAction的addAction()重载插入菜单中。如果QWidgetAction
触发triggered()
信号,菜单将关闭。警告
为了使
QMenu
在屏幕上可见,应使用exec()
或popup()
,而不是show()
或setVisible()
。要隐藏或禁用菜单栏中的菜单,或作为子菜单添加到另一个菜单中的菜单,请使用menuAction()
的相应属性。在macOS上使用Qt构建的QMenu与Cocoa¶
QMenu
只能在菜单/菜单栏中插入一次。后续的插入将不会产生任何效果,或者会导致菜单项被禁用。查看菜单示例,了解如何在您的应用程序中使用
QMenuBar
和QMenu
。重要的继承函数: addAction(),
removeAction()
,clear()
,addSeparator()
, 和addMenu()
。另请参阅
QMenuBar
菜单示例注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。此属性保存菜单的图标。
这相当于
menuAction()
的QAction::icon属性。默认情况下,如果没有明确设置图标,此属性包含一个空图标。
- property separatorsCollapsibleᅟ: bool¶
此属性用于确定是否应折叠连续的分离器。
此属性指定菜单中的连续分隔符是否应在视觉上折叠为单个分隔符。菜单开头或结尾的分隔符也会被隐藏。
默认情况下,此属性为
true
。- Access functions:
- property tearOffEnabledᅟ: bool¶
此属性表示菜单是否支持被撕下。
当为true时,菜单包含一个特殊的分离项(通常在菜单顶部显示为虚线),当触发时,它会创建菜单的副本。
这个“撕下”的副本存在于一个单独的窗口中。它包含与原始菜单相同的菜单项,除了撕下手柄。
默认情况下,此属性为
false
。- Access functions:
- property titleᅟ: str¶
此属性保存菜单的标题。
这相当于
menuAction()
的QAction::text属性。默认情况下,此属性包含一个空字符串。
- Access functions:
- property toolTipsVisibleᅟ: bool¶
此属性决定菜单操作的工具提示是否应可见。
此属性指定操作菜单条目是否显示其工具提示。
默认情况下,此属性为
false
。- Access functions:
构建一个带有父级
parent
的菜单。尽管弹出菜单始终是一个顶级小部件,但如果传递了父对象,当该父对象被销毁时,弹出菜单将被删除(与任何其他QObject一样)。
- __init__(title[, parent=None])
- Parameters:
标题 – str
parent –
QWidget
构建一个带有
title
和parent
的菜单。尽管弹出菜单始终是一个顶级小部件,但如果传递了父对象,当该父对象被销毁时,弹出菜单将被删除(与任何其他QObject一样)。
另请参阅
- aboutToHide()¶
此信号在菜单即将对用户隐藏之前发出。
另请参阅
- aboutToShow()¶
此信号在菜单显示给用户之前发出。
另请参阅
返回位于
pt
处的项目;如果该位置没有项目,则返回None
。返回动作
act
的几何形状。返回当前高亮的操作,如果没有操作被高亮,则返回
None
。另请参阅
- addAction(text, arg__2[, shortcut=0])¶
- Parameters:
文本 – str
arg__2 – 对象
快捷键 –
QKeySequence
- addAction(arg__1, text, arg__3[, shortcut=0])
- Parameters:
arg__1 –
QIcon
文本 – str
arg__3 – 对象
快捷键 –
QKeySequence
- addAction(text, receiver, member, shortcut)
- Parameters:
文本 – str
receiver –
QObject
member – str
快捷键 –
QKeySequence
- Return type:
注意
此函数已弃用。
使用
QWidget::addAction(text, shortcut, receiver, member)
代替。- addAction(icon, text, receiver, member, shortcut)
- Parameters:
图标 –
QIcon
文本 – str
receiver –
QObject
member – str
快捷键 –
QKeySequence
- Return type:
注意
此函数已弃用。
请使用
addAction
(图标, 文本, 快捷键, 接收器, 成员) 代替。这个便捷函数将
menu
作为子菜单添加到此菜单中。它返回menu
的menuAction()
。此菜单不拥有menu
的所有权。另请参阅
- addMenu(title)
- Parameters:
标题 – str
- Return type:
向菜单追加一个新的
QMenu
,带有title
。菜单拥有该菜单的所有权。返回新菜单。另请参阅
向菜单添加一个新的
QMenu
,带有icon
和title
。菜单将拥有该菜单的所有权。返回新菜单。另请参阅
这个便捷函数创建了一个新的分隔动作,即一个QAction::isSeparator()返回true但同时也具有
text
提示的动作,并将新动作添加到此菜单的动作列表中。它返回新创建的动作。提示的渲染取决于样式和平台。小部件样式可以在渲染部分时使用文本信息,或者选择忽略它并将部分渲染为简单的分隔符。
QMenu
拥有返回的 QAction 的所有权。另请参阅
这个便捷函数创建了一个新的分隔动作,即一个带有 QAction::isSeparator() 返回 true 的动作,但同时也具有
text
和icon
提示,并将新动作添加到此菜单的动作列表中。它返回新创建的动作。提示的渲染取决于样式和平台。小部件样式可以在渲染部分时使用文本和图标信息,或者可以选择忽略它们并将部分渲染为简单的分隔符。
QMenu
拥有返回的 QAction 的所有权。另请参阅
这个便捷函数创建了一个新的分隔符操作,即一个QAction::isSeparator()返回true的操作,并将新操作添加到此菜单的操作列表中。它返回新创建的操作。
QMenu
拥有返回的 QAction 的所有权。另请参阅
- clear()¶
移除菜单的所有操作。由菜单拥有且未在任何其他小部件中显示的操作将被删除。
另请参阅
- columnCount()¶
- Return type:
整数
如果菜单不适合屏幕显示,它会自动调整布局以适应屏幕。布局的具体形式取决于样式(例如,在Windows上,它将使用多列)。
此函数返回所需的列数。
返回当前的默认操作。
另请参阅
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
同步执行此菜单。
这相当于
exec(pos())
。这将返回在弹出菜单或其子菜单中触发的QAction,如果没有触发任何项目(通常是因为用户按下了Esc键),则返回
None
。在大多数情况下,您会希望自己指定位置,例如,当前鼠标位置:
exec(QCursor.pos())
或对齐到一个小部件:
exec(somewidget.mapToGlobal(QPoint(0,0)))
或者作为对 QMouseEvent *e 的响应:
exec(e.globalPosition().toPoint())
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
同步执行此菜单。
弹出菜单,以便操作
action
位于指定的 全局 位置p
。要将小部件的局部坐标转换为全局坐标,请使用mapToGlobal()
。这将返回在弹出菜单或其子菜单中触发的QAction,如果没有触发任何项目(通常是因为用户按下了Esc键),则返回
None
。请注意,所有信号都会像往常一样发出。如果你将一个QAction连接到一个槽,并调用菜单的
exec()
,你既可以通过信号-槽连接获得结果,也可以在exec()
的返回值中获得结果。常见用法是将菜单定位在当前鼠标位置:
exec(QCursor.pos())
或对齐到一个小部件:
exec(somewidget.mapToGlobal(QPoint(0, 0)))
或者作为对 QMouseEvent *e 的响应:
exec(e.globalPosition().toPoint())
当使用
exec()
或popup()
定位菜单时,请记住你不能依赖菜单当前的size()
。出于性能原因,菜单仅在必要时调整其大小。因此,在许多情况下,显示前后的大小是不同的。相反,使用sizeHint()
,它根据菜单的当前内容计算适当的大小。另请参阅
- static exec(actions, pos[, at=None[, parent=None]])
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
同步执行一个菜单。
菜单的操作由
actions
列表指定。菜单将弹出,以便指定的操作at
出现在全局位置pos
。如果未指定at
,则菜单将出现在位置pos
。parent
是菜单的父部件;指定父部件将在仅pos
不足以决定菜单应放置的位置时提供上下文(例如,在多个桌面或父部件嵌入QGraphicsView
时)。该函数返回在弹出菜单或其子菜单中触发的QAction,如果没有触发任何项目(通常是因为用户按下了Esc键),则返回
None
。这相当于:
menu = QMenu() at = actions[0] # Assumes actions is not empty for a in actions: menu.addAction(a) menu.exec(pos, at)
另请参阅
- exec_(arg__1, arg__2[, at=None[, parent=None]])
- hideTearOffMenu()¶
此函数将强制隐藏被撕下的菜单,使其从用户的桌面上消失。
当菜单操作被高亮显示时,会发出此信号;
action
是导致信号发出的操作。通常用于更新状态信息。
另请参阅
属性
iconᅟ
的获取器。- initStyleOption(option, action)¶
- Parameters:
option –
QStyleOptionMenuItem
action –
QAction
使用此菜单中的值和
action
中的信息初始化option
。当子类需要一个QStyleOptionMenuItem
但不想自己填写所有信息时,此方法非常有用。这个便捷函数在操作
before
之前插入menu
并返回菜单menuAction()
。另请参阅
此便捷函数创建一个新的标题操作,即一个操作,其QAction::isSeparator()返回true,但也有
text
提示。该函数将新创建的操作插入到此菜单的操作列表中,位于操作before
之前,并返回它。提示的渲染取决于样式和平台。小部件样式可以在渲染部分时使用文本信息,或者选择忽略它并将部分渲染为简单的分隔符。
QMenu
拥有返回的 QAction 的所有权。这个便捷函数创建了一个新的标题动作,即一个QAction::isSeparator()返回true但同时也具有
text
和icon
提示的动作。该函数将新创建的动作插入到此菜单的动作列表中,位于动作before
之前,并返回它。提示的渲染取决于样式和平台。小部件样式可以在渲染部分时使用文本和图标信息,或者可以选择忽略它们并将部分渲染为简单的分隔符。
QMenu
拥有返回的 QAction 的所有权。这个便捷函数创建了一个新的分隔符操作,即一个QAction::isSeparator()返回true的操作。该函数将新创建的操作插入到此菜单的操作列表中,位于
before
操作之前,并返回它。QMenu
拥有返回的 QAction 的所有权。- isEmpty()¶
- Return type:
布尔
如果菜单中没有插入可见的操作,则返回
true
,否则返回 false。另请参阅
- isTearOffEnabled()¶
- Return type:
布尔
属性
tearOffEnabledᅟ
的获取器。- isTearOffMenuVisible()¶
- Return type:
布尔
当菜单被撕下时,会显示第二个菜单以在新窗口中显示菜单内容。当菜单处于此模式且菜单可见时,返回
true
;否则返回false。返回与此菜单关联的操作。
返回由
action
包含的菜单,如果action
不包含菜单,则返回None
。在小部件应用程序中,包含菜单的操作可用于创建带有子菜单的菜单项,或插入工具栏以创建带有弹出菜单的按钮。
显示菜单,以便操作
atAction
位于指定的 全局 位置p
。要将小部件的局部坐标转换为全局坐标,请使用mapToGlobal()
。当使用
exec()
或popup()定位菜单时,请记住你不能依赖菜单当前的size()
。出于性能原因,菜单仅在必要时调整其大小,因此在许多情况下,显示前后的大小是不同的。相反,使用sizeHint()
,它会根据菜单的当前内容计算适当的大小。另请参阅
- separatorsCollapsible()¶
- Return type:
布尔
属性
separatorsCollapsibleᅟ
的获取器。将当前高亮的操作设置为
act
。另请参阅
这将默认操作设置为
act
。默认操作可能会有一个视觉提示,具体取决于当前的QStyle
。默认操作通常表示在发生拖放时默认会发生什么。另请参阅
属性
iconᅟ
的设置器。- setSeparatorsCollapsible(collapse)¶
- Parameters:
collapse – 布尔值
属性
separatorsCollapsibleᅟ
的设置器。- setTearOffEnabled(arg__1)¶
- Parameters:
arg__1 – 布尔值
另请参阅
属性
tearOffEnabledᅟ
的设置器。属性
titleᅟ
的设置器。- setToolTipsVisible(visible)¶
- Parameters:
visible – 布尔值
另请参阅
属性
toolTipsVisibleᅟ
的设置器。- showTearOffMenu()¶
这是一个重载函数。
此函数将强制显示撕下的菜单,使其出现在用户桌面上的鼠标光标下方。
- showTearOffMenu(pos)
- Parameters:
pos –
QPoint
此函数将强制显示撕下的菜单,使其出现在用户桌面上指定的全局位置
pos
。- title()¶
- Return type:
字符串
另请参阅
属性
titleᅟ
的获取器。- toolTipsVisible()¶
- Return type:
布尔
另请参阅
属性
toolTipsVisibleᅟ
的获取器。当此菜单中的操作被触发时,会发出此信号。
action
是导致信号被触发的动作。通常,您会将每个菜单操作的triggered()信号连接到其自己的自定义槽,但有时您可能希望将多个操作连接到单个槽,例如,当您有一组紧密相关的操作时,如“左对齐”、“居中”、“右对齐”。