En esta página

Menu QML Type

Un menú nativo. Más...

Import Statement: import Qt.labs.platform
Inherits:

QtObject

Propiedades

Señales

Métodos

Descripción detallada

El tipo Menu proporciona una API QML para menús emergentes nativos de la plataforma.

Un menú emergente nativo

Menu puede utilizarse en MenuBar, o como menú contextual independiente. El siguiente ejemplo muestra cómo abrir un menú contextual al hacer clic con el botón derecho del ratón:

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

Para crear submenús, declare un Menú como hijo de otro Menú:

Menu {
    title: qsTr("Edit")

    Menu {
        title: qsTr("Advanced")

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

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

Generación dinámica de elementos de menú

Puede generar dinámicamente elementos de menú con Instantiator. El siguiente código muestra cómo puede implementar un submenú "Archivos recientes", en el que los elementos proceden de una lista de archivos almacenados en la configuración:

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

Disponibilidad

Un menú nativo de la plataforma está disponible actualmente en las siguientes plataformas:

  • macOS
  • iOS
  • Android
  • Linux (sólo disponible como menú contextual independiente cuando se ejecuta con el tema de plataforma GTK+).

El módulo Qt Labs Platform utiliza Qt Widgets como alternativa en plataformas que no disponen de una implementación nativa. Por lo tanto, las aplicaciones que utilicen tipos del módulo Qt Labs Platform deben enlazar con QtWidgets y utilizar QApplication en lugar de QGuiApplication.

Para enlazar con la biblioteca QtWidgets, añada lo siguiente al archivo de proyecto qmake:

QT += widgets

Crear una instancia de QApplication en 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();
}

Nota: No se garantiza que los tipos de los módulos Qt.labs sigan siendo compatibles en futuras versiones.

Véase también MenuItem, MenuSeparator, y MenuBar.

Documentación de propiedades

data : list<QtObject> [default]

Esta propiedad por defecto contiene la lista de todos los objetos declarados como hijos del menú. La propiedad data incluye objetos que no son instancias de MenuItem, como Timer y QtObject.

Véase también items.

enabled : bool

Esta propiedad indica si el menú está habilitado. El valor por defecto es true.

font : font

Esta propiedad contiene la fuente del menú.

Véase también 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)]

Esta propiedad contiene el icono del elemento de menú.

Estas propiedades se introdujeron en Qt.labs.platform 1.1 (Qt 5.12).

items : list<MenuItem>

Esta propiedad contiene la lista de elementos del menú.

Esta propiedad contiene el menubar al que pertenece el menú, o null si el menú no está en un menubar.

Esta propiedad contiene el elemento que presenta el menú (en un menú padre).

minimumWidth : int

Esta propiedad contiene la anchura mínima del menú. El valor por defecto es -1 (sin anchura mínima).

parentMenu : Menu [read-only]

Esta propiedad contiene el menú padre al que pertenece el menú, o null si el menú no es un submenú.

systemTrayIcon : SystemTrayIcon [read-only]

Esta propiedad contiene el icono de la bandeja del sistema al que pertenece el menú, o null si el menú no está en un icono de la bandeja del sistema.

title : string

Esta propiedad contiene el título del menú.

type : enumeration

Esta propiedad contiene el tipo de menú.

Valores disponibles:

ConstanteDescripción
Menu.DefaultMenuUn menú normal (por defecto).
Menu.EditMenuUn menú de edición con elementos de cortar, copiar y pegar.

visible : bool

Esta propiedad indica si el menú es visible. El valor por defecto es true.

Documentación de la señal

aboutToHide()

Esta señal se emite cuando el menú está a punto de ocultarse al usuario.

Nota: El manejador correspondiente es onAboutToHide.

aboutToShow()

Esta señal se emite cuando el menú está a punto de mostrarse al usuario.

Nota: El manejador correspondiente es onAboutToShow.

Documentación del método

void addItem(MenuItem item)

Añade un item al final del menú.

void addMenu(Menu submenu)

Añade un submenu al final del menú.

void clear()

Elimina todos los elementos del menú.

void close()

Cierra el menú.

void insertItem(int index, MenuItem item)

Inserta un item en el index especificado en el menú.

void insertMenu(int index, Menu submenu)

Inserta un submenu en el index especificado en el menú.

void open(MenuItem item)

Abre el menú en la posición actual del ratón, opcionalmente alineado con un menú item.

void open(Item target, MenuItem item)

Abre el menú en el elemento target especificado, opcionalmente alineado a un menú item.

void removeItem(MenuItem item)

Elimina un item del menú.

void removeMenu(Menu submenu)

Elimina un submenu del menú.

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