菜单 QML 类型
本地菜单。 更多信息...
导入语句 | import Qt.labs.platform |
继承 |
属性
- data : list<QtObject>
- enabled : bool
- font : font
- icon
(自 Qt.labs.platform 1.1 (Qt 5.12) 起支持)
- icon.mask : bool
(自 Qt.labs.platform 1.1 (Qt 5.12) 起支持)
- icon.name : string
(自 Qt.labs.platform 1.1 (Qt 5.12) 起支持)
- icon.source : url
(自 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 : 枚举类型
- 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。
菜单可以使用在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 { 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平台模块在未提供原生实现的平台上将使用Qt Widgets作为后备。因此,使用Qt Labs平台模块的类型的应用程序应链接到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。
属性文档
enabled : bool |
此属性表示菜单是否启用。默认值是true
。
此属性持有菜单项的图标。
此QML属性自Qt.labs.platform 1.1(Qt 5.12)起被引入。
menuBar : MenuBar |
此属性持有菜单所属的菜单栏,或者当菜单不在菜单栏中时为null
。
menuItem : MenuItem |
此属性持有表示菜单(在父菜单中)的项目。
minimumWidth : int |
该属性保存菜单的最小宽度。默认值是-1
(没有最小宽度)。
parentMenu : Menu |
该属性保存所属的父级菜单,或null
表示该菜单不是子菜单。
systemTrayIcon : SystemTrayIcon |
该属性保存所属的系统托盘图标,或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 open(MenuItem item) |
在当前鼠标位置打开菜单,可选地将其对齐到菜单item。
void removeItem(MenuItem item) |
从菜单中移除item。
void removeMenu(Menu submenu) |
从菜单中移除submenu。
© 2024Qt公司有限公司。本文件内包含的文档贡献归其各自所有者所有。本文件提供的内容根据自由软件基金会发布的GNU自由文档许可协议版本1.3授权。Qt及其相应标志为芬兰及/或其他国家/地区的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。