Sur cette page

Menu QML Type

Un menu indigène. Plus d'informations...

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 des plates-formes natives.

Un menu contextuel natif

Le menu peut être utilisé dans un site MenuBar ou comme menu contextuel autonome. L'exemple suivant montre comment ouvrir un menu contextuel lors d'un clic droit de la souris :

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érer dynamiquement des éléments de menu

Vous pouvez générer dynamiquement des éléments de menu à l'aide de Instantiator. Le code suivant montre comment vous pouvez mettre en œuvre un sous-menu "Fichiers récents", où 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 de plate-forme natif est actuellement disponible sur les plates-formes suivantes :

  • macOS
  • iOS
  • Android
  • Linux (uniquement disponible en tant que menu contextuel autonome lorsqu'il est exécuté avec le thème de plateforme GTK+)

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

Pour établir un lien avec 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();
}

Note : La compatibilité des types dans les modules Qt.labs n'est pas garantie dans les versions futures.

Voir aussi 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 les 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 de caractères du menu.

Voir aussi 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 le ménubar auquel le menu appartient, ou null si le menu ne se trouve pas dans un ménubar.

Cette propriété contient l'élément qui présente 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 (pas de largeur minimale).

parentMenu : Menu [read-only]

Cette propriété contient le menu parent auquel le menu appartient, ou 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 le menu appartient, ou null si le menu ne se trouve pas dans 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 de menu.

Valeurs disponibles :

ConstanteDescription
Menu.DefaultMenuUn menu normal (par défaut).
Menu.EditMenuUn menu d'édition avec des éléments pré-remplis 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 le signal

aboutToHide()

Ce signal est émis lorsque le menu est sur le point d'être caché à 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 une adresse item à l'adresse index spécifiée dans le menu.

void insertMenu(int index, Menu submenu)

Insère une page submenu à l'adresse index spécifiée dans le menu.

void open(MenuItem item)

Ouvre le menu à la position actuelle de la souris, éventuellement aligné sur un menu item.

void open(Item target, MenuItem item)

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

void removeItem(MenuItem item)

Supprime un site item du menu.

void removeMenu(Menu submenu)

Supprime un site 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.