Spec-Zone.ru › Qt 5.12

Тип QML Menu

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

Оператор импорта: import Qt.labs.platform 1.1
С: Qt 5.8
Наследует:

QtObject

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

Свойства

  • data : list<Object>
  • enabled : bool
  • font : font
  • items : list<MenuItem>
  • menuBar : MenuBar
  • menuItem : MenuItem
  • minimumWidth : int
  • parentMenu : Menu
  • systemTrayIcon : SystemTrayIcon
  • title : string
  • 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(MenuItem item)
  • void open(Item target, MenuItem item)
  • void removeItem(MenuItem item)
  • void removeMenu(Menu submenu)

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

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

Меню можно использовать в 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.

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

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

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

См. также items.

enabled : bool

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

font : шрифт

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

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

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

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

aboutToShow()

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

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

void addItem(MenuItem item)

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

void addMenu(Menu submenu)

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

void clear()

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

void close()

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

void insertItem(int index, MenuItem item)

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

void insertMenu(int index, Menu submenu)

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

END_OF_DOCUMENT_MARKER

void open(MenuItem item)

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

void open(Item target, MenuItem item)

Открывает меню в указанном элементе target, необязательно выровненное по элементу меню 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.12/qml-qt-labs-platform-menu.html

Spec-Zone.ru

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