Menu QML Type

A native menu. 更多...

import 语句: import Qt.labs.platform 1.1
Since: Qt 5.8
继承:

QtObject

特性

信号

方法

详细描述

The Menu type provides a QML API for native platform menu popups.

Menu can be used in a MenuBar , or as a stand-alone context menu. The following example shows how to open a context menu on right mouse click:

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()
    }
}
					
					

To create submenus, declare a Menu as a child of another Menu:

Menu {
    title: qsTr("Edit")
    Menu {
        title: qsTr("Advanced")
        MenuItem {
            text: qsTr("Auto-indent Selection")
            onTriggered: autoIndentSelection()
        }
        MenuItem {
            text: qsTr("Rewrap Paragraph")
            onTriggered: rewrapParagraph()
        }
    }
}
					
					

Dynamically Generating Menu Items

It is possible to dynamically generate menu items. One of the easiest ways to do so is with Instantiator. For example, to implement a "Recent Files" submenu, where the items are based on a list of files stored in settings, the following code could be used:

Menu {
    title: qsTr("File")
    Menu {
        id: recentFilesSubMenu
        title: qsTr("Recent Files")
        enabled: recentFilesInstantiator.count > 0
        Instantiator {
            id: recentFilesInstantiator
            model: settings.recentFiles
            delegate: MenuItem {
                text: settings.displayableFilePath(modelData)
                onTriggered: loadFile(modelData)
            }
            onObjectAdded: recentFilesSubMenu.insertItem(index, object)
            onObjectRemoved: recentFilesSubMenu.removeItem(object)
        }
        MenuSeparator {}
        MenuItem {
            text: qsTr("Clear Recent Files")
            onTriggered: settings.clearRecentFiles()
        }
    }
}
					
					

可用性

A native platform menu is currently available on the following platforms:

  • macOS
  • iOS
  • Android
  • Linux (only available as a stand-alone context menu when running with the GTK+ platform theme)

The Qt Labs Platform module uses Qt Widgets as a fallback on platforms that do not have a native implementation available. Therefore, applications that use types from the Qt Labs Platform module should link to QtWidgets and use QApplication 而不是 QGuiApplication .

要链接到 QtWidgets library, add the following to your qmake project file:

QT += widgets
					

Create an instance of QApplication in main() :

#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}
					

注意: Types in Qt.labs modules are not guaranteed to remain compatible in future versions.

另请参阅 MenuItem , MenuSeparator ,和 MenuBar .

特性文档编制

[default] data : list < 对象 >

This default property holds the list of all objects declared as children of the menu. The data property includes objects that are not MenuItem 实例,譬如 Timer and QtObject .

另请参阅 .

enabled : bool

This property holds whether the menu is enabled. The default value is true .

font : font

This property holds the menu's font.

另请参阅 text .

icon group

icon.mask : bool

icon.name : string

icon.source : url

This property holds the menu item's icon.

This QML property was introduced in Qt.labs.platform 1.1 (Qt 5.12).

: list < MenuItem >

This property holds the list of items in the menu.

This property holds the menubar that the menu belongs to, or null if the menu is not in a menubar.

This property holds the item that presents the menu (in a parent menu).

minimumWidth : int

This property holds the minimum width of the menu. The default value is -1 (no minimum width).

[read-only] parentMenu : Menu

This property holds the parent menu that the menu belongs to, or null if the menu is not a sub-menu.

[read-only] systemTrayIcon : SystemTrayIcon

This property holds the system tray icon that the menu belongs to, or null if the menu is not in a system tray icon.

title : string

This property holds the menu's title.

type : enumeration

This property holds the type of the menu.

Available values:

常量 描述
Menu.DefaultMenu A normal menu (default).
Menu.EditMenu An edit menu with pre-populated cut, copy and paste items.

visible : bool

This property holds whether the menu is visible. The default value is true .

信号文档编制

aboutToHide ()

This signal is emitted when the menu is about to be hidden from the user.

注意: 相应处理程序是 onAboutToHide .

aboutToShow ()

This signal is emitted when the menu is about to be shown to the user.

注意: 相应处理程序是 onAboutToShow .

方法文档编制

void addItem ( MenuItem item )

添加 item to the end of the menu.

void addMenu ( Menu submenu )

添加 submenu to the end of the menu.

void clear ()

Removes all items from the menu.

void close ()

Closes the menu.

void insertItem ( int index , MenuItem item )

Inserts an item at the specified index in the menu.

void insertMenu ( int index , Menu submenu )

插入 submenu at the specified index in the menu.

void open ( Item target , MenuItem item )

Opens the menu at the specified target item, optionally aligned to a menu item .

void open ( MenuItem item )

Opens the menu at the current mouse position, optionally aligned to a menu item .

void removeItem ( MenuItem item )

Removes an item from the menu.

void removeMenu ( Menu submenu )

Removes a submenu from the menu.