Spec-Zone.ru › Qt 6.0

Тип QML Menu

Родной элемент меню. Подробнее...

Заявление об импорте: import Qt.labs.platform 1.1
С момента: Qt 5.8
Наследует:

QtObject

  • Список всех членов, включая унаследованные

Свойства

  • data : список<Объект>
  • enabled : bool
  • font : шрифт
  • icon
    • icon.mask : bool
    • icon.name : строка
    • icon.source : url
  • items : список<MenuItem>
  • menuBar : MenuBar
  • menuItem : MenuItem
  • minimumWidth : int
  • parentMenu : Menu
  • systemTrayIcon : SystemTrayIcon
  • title : строка
  • type : перечисление
  • visible : bool

Сигналы

  • aboutToHide()
  • aboutToShow()

Методы

  • void addItem(MenuItem item)
  • void addMenu(Menu submenu)
  • void clear()
  • void close()
  • void insertItem(int index, MenuItem item)
  • void insertMenu(int index, Menu submenu)
  • void open(Item target, MenuItem item)
  • void open(MenuItem item)
  • void removeItem(MenuItem item)
  • void removeMenu(Menu submenu)

Подробное описание

Тип Menu предоставляет API QML для всплывающих меню платформы.

Menu можно использовать в MenuBar или в качестве отдельного контекстного меню. Следующий пример показывает, как открыть контекстное меню при нажатии правой кнопкой мыши:

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

Подменю

Для создания подменю объявите Menu как дочерний элемент другого Menu:

Menu {
    title: qsTr("Edit")

    Menu {
        title: qsTr("Advanced")

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

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

Динамическое создание пунктов меню

Можно динамически генерировать пункты меню. Один из самых простых способов сделать это — с помощью Instantiator. Например, для реализации подменю «Недавние файлы», где элементы основаны на списке файлов, хранящихся в настройках, можно использовать следующий код:

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

Доступность

Родное меню платформы в настоящее время доступно на следующих платформах:

  • macOS
  • iOS
  • Android
  • Linux (доступно только как отдельное контекстное меню при запуске с темой платформы GTK+)

Модуль Qt Labs Platform использует Qt Widgets в качестве резервного варианта на платформах, где нет родной реализации. Поэтому приложения, использующие типы из модуля Qt Labs Platform, должны ссылаться на QtWidgets и использовать QApplication вместо QGuiApplication.

Чтобы ссылаться на библиотеку QtWidgets, добавьте следующее в файл проекта qmake:

QT += widgets

Создайте экземпляр QApplication в 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();
}

Примечание: Типы в модулях Qt.labs не гарантируют сохранение совместимости в будущих версиях.

См. также MenuItem, MenuSeparator и MenuBar.

Документация по свойствам

[по умолчанию] data : список<Объект>

Это свойство по умолчанию содержит список всех объектов, объявленных как дочерние элементы меню. Свойство data включает объекты, которые не являются экземплярами MenuItem, такие как Timer и QtObject.

См. также items.

enabled : bool

Это свойство указывает, включено ли меню. Значение по умолчанию — true.

font : шрифт

Это свойство содержит шрифт меню.

См. также text.

[с Qt.labs.platform 1.1 (Qt 5.12)] icon.mask : bool

Это свойство содержит значок элемента меню.

Это свойство QML было добавлено в Qt.labs.platform 1.1 (Qt 5.12).

items : список<MenuItem>

Это свойство содержит список элементов в меню.

[только для чтения] menuBar : MenuBar

Это свойство содержит строку меню, к которой принадлежит меню, или null если меню не принадлежит строке меню.

[только для чтения] menuItem : MenuItem

Это свойство содержит элемент, представляющий меню (в родительском меню).

minimumWidth : int

Это свойство содержит минимальную ширину меню. Значение по умолчанию — -1 (минимальная ширина не задана).

[только для чтения] parentMenu : Menu

Это свойство содержит родительское меню, к которому принадлежит данное меню, или null если меню не является подменю.

[только для чтения] systemTrayIcon : SystemTrayIcon

Это свойство содержит значок системного трея, к которому относится меню, или null если меню не принадлежит значку системного трея.

title : строка

Это свойство содержит заголовок меню.

type : перечисление

Это свойство содержит тип меню.

Доступные значения:

Константа Описание
Menu.DefaultMenu Обычное меню (по умолчанию).
Menu.EditMenu Меню редактирования с предварительно заполненными пунктами «Вырезать», «Копировать» и «Вставить».

visible : bool

Это свойство указывает, видно ли меню. Значение по умолчанию — true.

Документация по сигналам

aboutToHide()

Этот сигнал испускается, когда меню собирается скрыться от пользователя.

Примечание: Соответствующий обработчик — onAboutToHide.

aboutToShow()

Этот сигнал испускается, когда меню собирается отобразиться пользователю.

Примечание: Соответствующий обработчик — onAboutToShow.

Документация по методам

void addItem(MenuItem item)

Добавляет item в конец меню.

void addMenu(Menu submenu)

Добавляет submenu в конец меню.

void clear()

Удаляет все элементы из меню.

void close()

Закрывает меню.

END_OF_DOCUMENT_MARKER

void insertItem(int index, MenuItem item)

Вставляет item в указанный index в меню.

void insertMenu(int index, Menu submenu)

Вставляет submenu в указанный index в меню.

void open(Item target, MenuItem item)

Открывает меню в указанном элементе target, необязательно выровненное по элементу item.

void open(MenuItem item)

Открывает меню в текущей позиции мыши, необязательно выровненное по элементу item.

void removeItem(MenuItem item)

Удаляет item из меню.

void removeMenu(Menu submenu)

Удаляет submenu из меню.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qml-qt-labs-platform-menu.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API