Тип QML Menu
Родной элемент меню. Подробнее...
| Заявление об импорте: | import Qt.labs.platform |
| С момента: | Qt 5.8 |
| Наследует: |
Свойства
- data : list<QtObject>
- enabled : bool
- font : шрифт
-
icon
- icon.mask : bool
- icon.name : строка
- icon.source : url
- items : list<MenuItem>
- menuBar : MenuBar
- menuItem : MenuItem
- minimumWidth : int
- parentMenu : Menu
- systemTrayIcon : SystemTrayIcon
- title : строка
- type : перечисление
- visible : bool
Сигналы
Методы
- 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 : список<QtObject>
Это свойство по умолчанию содержит список всех объектов, объявленных как дочерние элементы меню. Свойство data включает объекты, которые не являются экземплярами MenuItem, такие как Timer и QtObject.
См. также items.
enabled : bool
Это свойство указывает, включено ли меню. Значение по умолчанию — true.
font : шрифт
Это свойство содержит шрифт меню.
См. также title.
[с момента Qt.labs.platform 1.1 (Qt 5.12)] icon.mask : bool
Это свойство содержит значок элемента меню.
Это свойство QML было добавлено в Qt.labs.platform 1.1 (Qt 5.12).
Это свойство содержит список элементов в меню.
[только для чтения] 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_MARKERvoid 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.2/qml-qt-labs-platform-menu.html