PySide6.QtWidgets.QMenuBar¶
- class QMenuBar¶
-
概要¶
属性¶
defaultUpᅟ
- 弹出框的方向nativeMenuBarᅟ
- 是否在支持的平台上将菜单栏用作原生菜单栏
方法¶
def
__init__()
def
actionAt()
def
actionGeometry()
def
activeAction()
def
addMenu()
def
addSeparator()
def
clear()
def
cornerWidget()
def
insertMenu()
def
isDefaultUp()
def
setDefaultUp()
虚拟方法¶
信号¶
def
hovered()
def
triggered()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
菜单栏由一系列下拉菜单项组成。您可以使用
addMenu()
添加菜单项。例如,假设menubar
是指向QMenuBar
的指针,fileMenu
是指向QMenu
的指针,以下语句将菜单插入菜单栏:menubar.addMenu(fileMenu)
菜单项文本中的“&”符号将Alt+F设置为该菜单的快捷键。(您可以使用“&&”在菜单栏中显示实际的“&”符号。)
不需要布局菜单栏。它会自动将其几何形状设置为父小部件的顶部,并在父小部件调整大小时适当地更改它。
用法¶
在大多数主窗口风格的应用程序中,您会使用
QMainWindow
中提供的menuBar()
函数,将QMenu
添加到菜单栏,并将QAction添加到弹出菜单中。示例(来自菜单示例):
fileMenu = menuBar().addMenu(tr("File")) fileMenu.addAction(newAct)
菜单项可以通过
removeAction()
移除。可以通过使用
QWidgetAction
类的实例来将小部件添加到菜单中。这些操作可以像往常一样插入到菜单中;有关更多详细信息,请参阅QMenu
文档。平台依赖的外观和感觉¶
不同的平台对菜单栏的外观及其在用户交互时的行为有不同的要求。例如,Windows系统通常配置为,只有在按下Alt键时才会显示指示菜单栏项键盘快捷键的下划线字符助记符。
QMenuBar 作为全局菜单栏¶
在macOS和某些Linux桌面环境(如Ubuntu Unity)上,
QMenuBar
是一个用于使用系统范围菜单栏的包装器。如果你在一个对话框中有多个菜单栏,最外层的菜单栏(通常位于具有Qt::Window小部件标志的小部件内)将用于系统范围的菜单栏。Qt for macOS 还提供了一个菜单栏合并功能,使
QMenuBar
更符合 macOS 菜单栏布局的惯例。如果某个条目被移动,其插槽仍会像在原始位置一样触发。合并功能基于菜单项的QAction::menuRole()。如果一个项目具有QAction::TextHeuristicRole,则通过使用以下启发式方法匹配标题的字符串来确定角色:
字符串匹配
位置
备注
about.*
应用程序菜单 | 关于 <应用程序名称>
应用程序名称从
Info.plist
文件中获取(见下面的注释)。如果未找到此条目,应用程序菜单中将不会显示“关于”项。配置、选项、设置、设置或偏好
应用程序菜单 | 偏好设置
如果未找到此条目,设置项将被禁用
退出或退出
应用程序菜单 | 退出 <应用程序名称>
如果未找到此条目,将创建一个默认的退出项来调用 QCoreApplication::quit()
您可以通过将QAction::menuRole()属性设置为QAction::NoRole来覆盖此行为。
如果你想让Mac应用程序中的所有窗口共享一个菜单栏,你必须创建一个没有父级的菜单栏。可以通过以下方式创建一个没有父级的菜单栏:
menuBar = QMenuBar(None)
注意
不要调用
menuBar()
来创建共享菜单栏,因为该菜单栏将以QMainWindow
作为其父对象。该菜单栏只会显示在父QMainWindow
中。注意
macOS菜单栏中应用程序名称的文本是从应用程序包中的
Info.plist
文件中设置的值获取的。有关更多信息,请参阅Qt for macOS - 部署。注意
在Linux上,如果D-Bus会话总线上有com.canonical.AppMenu.Registrar服务可用,那么Qt将与其通信,将应用程序的菜单安装到全局菜单栏中,如前所述。
示例¶
菜单示例展示了如何使用
QMenuBar
和QMenu
。其他主窗口应用程序示例也使用这些类提供了菜单。另请参阅
QMenu
苹果人机界面指南介绍 菜单示例注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property defaultUpᅟ: bool¶
此属性保存弹出窗口的方向。
默认的弹出方向。默认情况下,菜单会在屏幕上“向下”弹出。通过将属性设置为true,菜单将“向上”弹出。您可能会为位于其引用文档下方的菜单调用此功能。
如果菜单无法在屏幕上完全显示,将自动使用另一个方向。
- Access functions:
- property nativeMenuBarᅟ: bool¶
此属性决定是否在支持的平台上使用菜单栏作为原生菜单栏。
此属性指定是否应在支持它的平台上将菜单栏用作本机菜单栏。当前支持的平台是macOS和使用com.canonical.dbusmenu D-Bus接口的Linux桌面(如Ubuntu Unity)。如果此属性为
true
,则菜单栏将用于本机菜单栏,并且不在其父窗口内;如果false
,则菜单栏保留在窗口内。在其他平台上,设置此属性无效,读取此属性将始终返回false
。默认情况下,遵循是否为应用程序设置了Qt::AA_DontUseNativeMenuBar属性。显式设置此属性会覆盖该属性的存在(或不存在)。
- Access functions:
构建一个带有父级
parent
的菜单栏。返回位于
pt
的QAction。如果在pt
没有动作或该位置有分隔符,则返回None
。返回动作
act
的几何形状为 QRect。另请参阅
返回当前高亮的QAction,如果有的话,否则返回
None
。另请参阅
将
menu
附加到菜单栏。返回菜单的menuAction()。菜单栏不会拥有该菜单的所有权。- addMenu(title)
- Parameters:
标题 – str
- Return type:
向菜单栏追加一个带有
title
的新QMenu
。菜单栏将拥有该菜单的所有权。返回新菜单。另请参阅
向菜单栏添加一个新的
QMenu
,带有icon
和title
。菜单栏将拥有该菜单的所有权。返回新菜单。另请参阅
向菜单添加一个分隔符。
- clear()¶
从菜单栏中移除所有操作。
注意
在macOS上,已合并到系统菜单栏的菜单项不会被此函数移除。处理这个问题的一种方法是自己移除额外的操作。你可以在不同的菜单上设置菜单角色,这样你就可以提前知道哪些菜单项会被合并,哪些不会。然后决定要重新创建或移除哪些内容。
另请参阅
返回第一个菜单项左侧或最后一个菜单项右侧的小部件,具体取决于
corner
。当菜单操作被高亮显示时,会发出此信号;
action
是导致事件被发送的操作。通常用于更新状态信息。
另请参阅
- initStyleOption(option, action)¶
- Parameters:
option –
QStyleOptionMenuItem
action –
QAction
使用菜单栏中的值和
action
中的信息初始化option
。当子类需要一个QStyleOptionMenuItem
但不想自己填写所有信息时,此方法非常有用。这个便捷函数在操作
before
之前插入menu
并返回菜单的 menuAction()。另请参阅
此便捷函数创建一个新的分隔符操作,即一个QAction::isSeparator()返回true的操作。该函数将新创建的操作插入到此菜单栏的操作列表中,位于操作
before
之前,并返回它。- isDefaultUp()¶
- Return type:
布尔
属性
defaultUpᅟ
的获取器。- isNativeMenuBar()¶
- Return type:
布尔
属性
nativeMenuBarᅟ
的获取器。将当前高亮的操作设置为
act
。另请参阅
这将设置给定的
widget
直接显示在第一个菜单项的左侧,或最后一个菜单项的右侧,具体取决于corner
。菜单栏接管了
widget
的所有权,将其重新设置为菜单栏的子部件。然而,如果corner
已经包含了一个部件,那么之前的部件将不再被管理,并且仍然是菜单栏的可见子部件。- setDefaultUp(arg__1)¶
- Parameters:
arg__1 – 布尔值
另请参阅
属性
defaultUpᅟ
的设置器。- setNativeMenuBar(nativeMenuBar)¶
- Parameters:
nativeMenuBar – 布尔值
另请参阅
属性
nativeMenuBarᅟ
的设置器。当属于此菜单栏的菜单中的操作因鼠标点击而触发时,会发出此信号;
action
是导致信号发出的操作。通常,您会使用QAction::triggered()将每个菜单操作连接到单个槽,但有时您可能希望将多个项目连接到单个槽(最常见的情况是用户从数组中选择)。在这种情况下,此信号非常有用。
另请参阅