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 –
QObjectmember – str
快捷键 –
QKeySequence
- Return type:
注意
此函数已弃用。
使用
QWidget::addAction(text, shortcut, receiver, member)代替。- addAction(icon, text, receiver, member, shortcut)
- Parameters:
图标 –
QIcon文本 – str
receiver –
QObjectmember – 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 –
QStyleOptionMenuItemaction –
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()信号连接到其自己的自定义槽,但有时您可能希望将多个操作连接到单个槽,例如,当您有一组紧密相关的操作时,如“左对齐”、“居中”、“右对齐”。