Spec-Zone.ru › Qt 5.11

Тип QML Menu

Родное меню. Подробнее...

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

QtObject

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

Свойства

  • data : list<Object>
  • enabled : bool
  • font : font
  • iconName : string
  • iconSource : url
  • 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(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::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 : список<Object>

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

См. также items.

enabled : bool

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

font : шрифт

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

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

iconName : строка

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

См. также iconSource и QIcon::fromTheme().

iconSource : url

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

См. также iconName.

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 в меню.

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

Spec-Zone.ru

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