Spec-Zone.ru › Qt 5.15

Тип QML меню

Нативное меню. Подробнее...

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

QtObject

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

Свойства

  • data : список<Объект>
  • enabled : bool
  • font : шрифт
  • items : список<MenuItem>
  • menuBar : MenuBar
  • menuItem : MenuItem
  • minimumWidth : int
  • parentMenu : Меню
  • 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 для всплывающих меню платформы.

Меню можно использовать в 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::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

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

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

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

[default] data : список<Объект>

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

См. также items.

enabled : bool

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

font : шрифт

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

См. также текст.

items : список<MenuItem>

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

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

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

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

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

minimumWidth : int

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

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

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

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

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

title : строка

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

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

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

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

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

visible : bool

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

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

aboutToHide()

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

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

aboutToShow()

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

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

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

void addItem(MenuItem item)

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

void addMenu(Меню submenu)

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

void clear()

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

void close()

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

void insertItem(int index, MenuItem item)

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

void insertMenu(int index, Меню submenu)

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

END_OF_DOCUMENT_MARKER

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-5.15/qml-qt-labs-platform-menu.html

Spec-Zone.ru

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