Menu QML Type
原生菜单。更多...
| Import Statement: | import Qt.labs.platform |
| Inherits: |
属性
- data : list<QtObject>
- enabled : bool
- font : font
- icon
(since Qt.labs.platform 1.1 (Qt 5.12))- icon.mask : bool
(since Qt.labs.platform 1.1 (Qt 5.12)) - icon.name : string
(since Qt.labs.platform 1.1 (Qt 5.12)) - icon.source : url
(since Qt.labs.platform 1.1 (Qt 5.12))
- icon.mask : bool
- items : list<MenuItem>
- menuBar : MenuBar
- menuItem : MenuItem
- minimumWidth : int
- parentMenu : Menu
- systemTrayIcon : SystemTrayIcon
- title : string
- type : enumeration
- visible : bool
信号
方法
- void addItem(MenuItem item)
- void addMenu(Menu submenu)
- void clear()
- void close()
- void insertItem(int index, MenuItem item)
- void insertMenu(int index, Menu submenu)
- void open(MenuItem item)
- void open(Item target, MenuItem item)
- void removeItem(MenuItem item)
- void removeMenu(Menu submenu)
详细说明
Menu 类型为原生平台的菜单弹出窗口提供了一个 QML API。

Menu 既可用于MenuBar 中,也可作为独立的上下文菜单使用。以下示例演示了如何在右键单击时打开上下文菜单:
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
onClicked: zoomMenu.open()
}
Menu {
id: zoomMenu
MenuItem {
text: qsTr("Zoom In")
shortcut: StandardKey.ZoomIn
onTriggered: zoomIn()
}
MenuItem {
text: qsTr("Zoom Out")
shortcut: StandardKey.ZoomOut
onTriggered: zoomOut()
}
}子菜单
要创建子菜单,请将一个 Menu 声明为另一个 Menu 的子节点:
Menu {
title: qsTr("Edit")
Menu {
title: qsTr("Advanced")
MenuItem {
text: qsTr("Auto-indent Selection")
onTriggered: autoIndentSelection()
}
MenuItem {
text: qsTr("Rewrap Paragraph")
onTriggered: rewrapParagraph()
}
}
}动态生成菜单项
您可以使用Instantiator 动态生成菜单项。以下代码演示了如何实现“最近文件”子菜单,其中菜单项来自存储在设置中的文件列表:
Menu {
title: qsTr("File")
Menu {
id: recentFilesMenu
title: qsTr("Recent Files")
enabled: recentFilesInstantiator.count > 0
Instantiator {
id: recentFilesInstantiator
model: settings.recentFiles
delegate: MenuItem {
text: settings.displayableFilePath(modelData)
onTriggered: loadFile(modelData)
}
onObjectAdded: (index, object) => recentFilesMenu.insertItem(index, object)
onObjectRemoved: (index, object) => recentFilesMenu.removeItem(object)
}
MenuSeparator {}
MenuItem {
text: qsTr("Clear Recent Files")
onTriggered: settings.clearRecentFiles()
}
}
}可用性
原生平台菜单目前可在以下平台上使用:
- macOS
- iOS
- Android
- Linux(仅在使用 GTK+ 平台主题时作为独立的上下文菜单提供)
在没有原生实现的平台上,Qt Labs Platform 模块会使用Qt Widgets 作为备用方案。因此,使用Qt Labs Platform 模块中类型的应用程序应链接到QtWidgets ,并使用QApplication 代替QGuiApplication 。
要链接到QtWidgets 库,请在您的 qmake 项目文件中添加以下内容:
QT += widgets在main() 中创建QApplication 的实例:
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}注意: Qt.labs 模块中的类型在未来版本中不保证保持兼容。
另请参阅 MenuItem 、MenuSeparator 以及MenuBar 。
属性文档
data : list<QtObject> [default]
此默认属性包含所有被声明为该菜单子项的对象列表。data 属性包含非MenuItem 实例的对象,例如Timer 和QtObject 。
另请参阅 items 。
enabled : bool
该属性用于指定菜单是否已启用。默认值为true 。
font : font
此属性用于指定菜单的字体。
另请参阅 title 。
icon group
icon.mask : bool [since Qt.labs.platform 1.1 (Qt 5.12)]
icon.name : string [since Qt.labs.platform 1.1 (Qt 5.12)]
icon.source : url [since Qt.labs.platform 1.1 (Qt 5.12)]
该属性存储菜单项的图标。
这些属性是在 Qt Labs Platform 1.1(Qt 5.12)中引入的。
items : list<MenuItem>
该属性保存了菜单中的项目列表。
menuBar : MenuBar [read-only]
该属性存储该菜单所属的菜单栏,如果该菜单未位于任何菜单栏中,则该属性值为null 。
menuItem : MenuItem [read-only]
该属性存储了显示菜单(在父菜单中)的项。
minimumWidth : int
该属性用于指定菜单的最小宽度。默认值为-1 (无最小宽度)。
parentMenu : Menu [read-only]
该属性存储该菜单所属的父菜单;如果该菜单不是子菜单,则该属性值为null 。
systemTrayIcon : SystemTrayIcon [read-only]
该属性存储菜单所属的系统托盘图标,如果菜单不在系统托盘图标中,则该属性值为null 。
title : string
此属性用于存储菜单的标题。
type : enumeration
该属性存储菜单的类型。
可用值:
| 常量 | 描述 |
|---|---|
Menu.DefaultMenu | 普通菜单(默认)。 |
Menu.EditMenu | 一个预先填充了“剪切”、“复制”和“粘贴”项的编辑菜单。 |
visible : bool
该属性用于控制菜单是否可见。默认值为true 。
信号文档
aboutToHide()
当菜单即将对用户隐藏时,会发出此信号。
注意: 相应的处理程序 为onAboutToHide 。
aboutToShow()
当即将向用户显示菜单时,会触发此信号。
注意: 对应的处理程序 是onAboutToShow 。
方法文档
void addItem(MenuItem item)
在菜单末尾添加一个item 。
void addMenu(Menu submenu)
在菜单末尾添加一个submenu 。
void clear()
从菜单中移除所有项目。
void close()
关闭菜单。
void insertItem(int index, MenuItem item)
在菜单中指定位置index 处插入item 。
void insertMenu(int index, Menu submenu)
在菜单中指定位置(index )插入“submenu ”。
void open(MenuItem item)
在当前鼠标位置打开菜单,可选择将其对齐到菜单item 。
void open(Item target, MenuItem item)
在指定的target 项处打开菜单,可选地将其对齐到菜单的item 。
void removeItem(MenuItem item)
从菜单中移除item 。
void removeMenu(Menu submenu)
从菜单中移除一个submenu 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.