Sur cette page

Menu QML Type

Un menu natif. En savoir plus...

Import Statement: import Qt.labs.platform
Inherits:

QtObject

Propriétés

Signaux

Méthodes

Description détaillée

Le type Menu fournit une API QML pour les menus contextuels natifs de la plateforme.

Un menu contextuel natif

Le type « Menu » peut être utilisé dans un « MenuBar » ou comme menu contextuel autonome. L'exemple suivant montre comment ouvrir un menu contextuel lors d'un clic droit :

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

Pour créer des sous-menus, déclarez un Menu comme enfant d'un autre Menu :

Menu {
    title: qsTr("Edit")

    Menu {
        title: qsTr("Advanced")

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

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

Génération dynamique d’éléments de menu

Vous pouvez générer dynamiquement des éléments de menu à l'aide de ` Instantiator`. Le code suivant montre comment implémenter un sous-menu « Fichiers récents », dont les éléments proviennent d'une liste de fichiers stockés dans les paramètres :

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

Disponibilité

Un menu natif est actuellement disponible sur les plateformes suivantes :

  • macOS
  • iOS
  • Android
  • Linux (disponible uniquement sous forme de menu contextuel autonome lors de l'exécution avec le thème de la plateforme GTK+)

Le module Qt Labs Platform utilise Qt Widgets comme solution de secours sur les plateformes ne disposant pas d’une implémentation native. Par conséquent, les applications utilisant des types du module Qt Labs Platform doivent être liées à QtWidgets et utiliser QApplication au lieu de QGuiApplication.

Pour lier votre application à la bibliothèque QtWidgets, ajoutez ce qui suit à votre fichier de projet qmake :

QT += widgets

Créez une instance de QApplication dans 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();
}

Remarque : la compatibilité des types dans les modules Qt.labs n’est pas garantie dans les versions futures.

Voir également MenuItem, MenuSeparator et MenuBar.

Documentation sur les propriétés

data : list<QtObject> [default]

Cette propriété par défaut contient la liste de tous les objets déclarés comme enfants du menu. La propriété « data » inclut des objets qui ne sont pas des instances de ` MenuItem `, tels que ` Timer ` et ` QtObject`.

Voir également items.

enabled : bool

Cette propriété indique si le menu est activé. La valeur par défaut est « true ».

font : font

Cette propriété définit la police du menu.

Voir également 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)]

Cette propriété contient l'icône de l'élément de menu.

Ces propriétés ont été introduites dans Qt Labs Platform 1.1 (Qt 5.12).

items : list<MenuItem>

Cette propriété contient la liste des éléments du menu.

Cette propriété contient la barre de menus à laquelle appartient le menu, ou la valeur « null » si le menu ne figure pas dans une barre de menus.

Cette propriété contient l'élément qui affiche le menu (dans un menu parent).

minimumWidth : int

Cette propriété définit la largeur minimale du menu. La valeur par défaut est « -1 » (aucune largeur minimale).

parentMenu : Menu [read-only]

Cette propriété contient le menu parent auquel appartient le menu, ou la valeur « null » si le menu n'est pas un sous-menu.

systemTrayIcon : SystemTrayIcon [read-only]

Cette propriété contient l'icône de la barre d'état système à laquelle appartient le menu, ou la valeur « null » si le menu n'est pas associé à une icône de la barre d'état système.

title : string

Cette propriété contient le titre du menu.

type : enumeration

Cette propriété indique le type du menu.

Valeurs disponibles :

ConstanteDescription
Menu.DefaultMenuUn menu normal (par défaut).
Menu.EditMenuUn menu d'édition contenant des éléments prédéfinis pour couper, copier et coller.

visible : bool

Cette propriété indique si le menu est visible. La valeur par défaut est « true ».

Documentation sur les signaux

aboutToHide()

Ce signal est émis lorsque le menu est sur le point d'être masqué à l'utilisateur.

Remarque : le gestionnaire correspondant est onAboutToHide.

aboutToShow()

Ce signal est émis lorsque le menu est sur le point d'être affiché à l'utilisateur.

Remarque : le gestionnaire correspondant est onAboutToShow.

Documentation de la méthode

void addItem(MenuItem item)

Ajoute un « item » à la fin du menu.

void addMenu(Menu submenu)

Ajoute un « submenu » à la fin du menu.

void clear()

Supprime tous les éléments du menu.

void close()

Ferme le menu.

void insertItem(int index, MenuItem item)

Insère un élément « item » à l'index spécifiée dans le menu.

void insertMenu(int index, Menu submenu)

Insère un élément « submenu » à l'index spécifiée dans le menu.

void open(MenuItem item)

Ouvre le menu à l'emplacement actuel de la souris, éventuellement aligné sur une item.

void open(Item target, MenuItem item)

Ouvre le menu à l'élément spécifié target, éventuellement aligné sur un item.

void removeItem(MenuItem item)

Supprime une « item » du menu.

void removeMenu(Menu submenu)

Supprime une « submenu » du menu.

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