Menu QML Type

Ein natives Menü. Mehr...

Import Statement: import Qt.labs.platform
Inherits:

QtObject

Eigenschaften

Signale

Methoden

Detaillierte Beschreibung

Der Typ Menu bietet eine QML-API für plattformeigene Menü-Popups.

Menu kann in einem MenuBar verwendet werden, oder als eigenständiges Kontextmenü. Das folgende Beispiel zeigt, wie man ein Kontextmenü mit der rechten Maustaste öffnet:

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

Um Untermenüs zu erstellen, deklarieren Sie ein Menü als Kind eines anderen Menüs:

Menu {
    title: qsTr("Edit")

    Menu {
        title: qsTr("Advanced")

        MenuItem {
            text: qsTr("Auto-indent Selection")
            onTriggered: autoIndentSelection()
        }

        MenuItem {
            text: qsTr("Rewrap Paragraph")
            onTriggered: rewrapParagraph()
        }
    }
}

Menüpunkte dynamisch erzeugen

Mit Instantiator können Sie Menüpunkte dynamisch erzeugen. Der folgende Code zeigt, wie Sie ein Untermenü "Letzte Dateien" implementieren können, wobei die Einträge aus einer Liste von Dateien stammen, die in den Einstellungen gespeichert sind:

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

Verfügbarkeit

Ein plattformeigenes Menü ist derzeit auf den folgenden Plattformen verfügbar:

  • macOS
  • iOS
  • Android
  • Linux (nur als eigenständiges Kontextmenü verfügbar, wenn es mit dem GTK+-Plattformthema ausgeführt wird)

Das Modul Qt Labs Platform verwendet Qt Widgets als Fallback auf Plattformen, für die keine native Implementierung verfügbar ist. Daher sollten Anwendungen, die Typen aus dem Qt Labs Platform Modul verwenden, zu QtWidgets linken und QApplication anstelle von QGuiApplication verwenden.

Um gegen die QtWidgets-Bibliothek zu linken, fügen Sie das Folgende zu Ihrer qmake-Projektdatei hinzu:

QT += widgets

Erstellen Sie eine Instanz von QApplication in main():

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

Hinweis: Es ist nicht garantiert, dass Typen in Qt.labs-Modulen in zukünftigen Versionen kompatibel bleiben.

Siehe auch MenuItem, MenuSeparator, und MenuBar.

Eigenschaft Dokumentation

data : list<QtObject> [default]

Diese Standardeigenschaft enthält die Liste aller Objekte, die als Kinder des Menüs deklariert sind. Die Eigenschaft data enthält Objekte, die keine MenuItem Instanzen sind, wie Timer und QtObject.

Siehe auch items.


enabled : bool

Diese Eigenschaft gibt an, ob das Menü aktiviert ist. Der Standardwert ist true.


font : font

Diese Eigenschaft enthält die Schriftart des Menüs.

Siehe auch 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)]

Diese Eigenschaft enthält das Symbol des Menüeintrags.

Diese QML-Eigenschaft wurde in Qt.labs.platform 1.1 (Qt 5.12) eingeführt.


items : list<MenuItem>

Diese Eigenschaft enthält die Liste der Einträge im Menü.


Diese Eigenschaft enthält die Menüleiste, zu der das Menü gehört, oder null, wenn sich das Menü nicht in einer Menüleiste befindet.


Diese Eigenschaft enthält das Element, das das Menü präsentiert (in einem übergeordneten Menü).


minimumWidth : int

Diese Eigenschaft enthält die Mindestbreite des Menüs. Der Standardwert ist -1 (keine Mindestbreite).


parentMenu : Menu [read-only]

Diese Eigenschaft enthält das übergeordnete Menü, zu dem das Menü gehört, oder null, wenn das Menü kein Untermenü ist.


systemTrayIcon : SystemTrayIcon [read-only]

Diese Eigenschaft enthält das Taskleistensymbol, zu dem das Menü gehört, oder null, wenn das Menü nicht in einem Taskleistensymbol enthalten ist.


title : string

Diese Eigenschaft enthält den Titel des Menüs.


type : enumeration

Diese Eigenschaft enthält den Typ des Menüs.

Verfügbare Werte:

KonstanteBeschreibung
Menu.DefaultMenuEin normales Menü (Standard).
Menu.EditMenuEin Bearbeitungsmenü mit vordefinierten Einträgen zum Ausschneiden, Kopieren und Einfügen.

visible : bool

Diese Eigenschaft gibt an, ob das Menü sichtbar ist. Der Standardwert ist true.


Signal Dokumentation

aboutToHide()

Dieses Signal wird ausgegeben, wenn das Menü vor dem Benutzer verborgen werden soll.

Hinweis: Der entsprechende Handler ist onAboutToHide.


aboutToShow()

Dieses Signal wird ausgegeben, wenn das Menü für den Benutzer angezeigt werden soll.

Hinweis: Der entsprechende Handler ist onAboutToShow.


Methode Dokumentation

void addItem(MenuItem item)

Fügt ein item am Ende des Menüs hinzu.


void addMenu(Menu submenu)

Fügt ein submenu am Ende des Menüs ein.


void clear()

Entfernt alle Einträge aus dem Menü.


void close()

Schließt das Menü.


void insertItem(int index, MenuItem item)

Fügt ein item an der angegebenen Stelle index in das Menü ein.


void insertMenu(int index, Menu submenu)

Fügt ein submenu an der angegebenen Stelle index in das Menü ein.


void open(MenuItem item)

Öffnet das Menü an der aktuellen Mausposition, optional ausgerichtet an einem Menü item.


void open(Item target, MenuItem item)

Öffnet das Menü an der angegebenen Position target, optional ausgerichtet an einem Menü item.


void removeItem(MenuItem item)

Entfernt ein item aus dem Menü.


void removeMenu(Menu submenu)

Entfernt ein submenu aus dem Menü.


© 2025 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.