Тип QML Menu
Появляющееся меню, которое может использоваться в качестве контекстного или всплывающего меню. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 2.5 |
| С тех пор: | Qt 5.7 |
| Наследует: |
Свойства
- cascade : bool
- contentData : list<Object>
- contentModel : модель
- count : int
- currentIndex : int
- delegate : Компонент
- overlap : вещественное
- title : строка
Методы
- Действие actionAt(int index)
- void addAction(Action action)
- void addItem(Item item)
- void addMenu(Menu menu)
- void dismiss()
- void insertAction(int index, Action action)
- void insertItem(int index, Item item)
- void insertMenu(int index, Menu menu)
- Item itemAt(int index)
- Menu menuAt(int index)
- void moveItem(int from, int to)
- void popup(MenuItem item = null)
- void popup(Item parent, MenuItem item = null)
- void popup(point pos, MenuItem item = null)
- void popup(Item parent, point pos, MenuItem item = null)
- void popup(real x, real y, MenuItem item = null)
- void popup(Item parent, real x, real y, MenuItem item = null)
- void removeAction(Action action)
- void removeItem(Item item)
- void removeMenu(Menu menu)
- Action takeAction(int index)
- MenuItem takeItem(int index)
- Menu takeMenu(int index)
Подробное описание
Меню имеет два основных варианта использования:
- Контекстные меню; например, меню, которое отображается после щелчка правой кнопкой мыши
- Всплывающие меню; например, меню, которое отображается после щелчка по кнопке
При использовании в качестве контекстного меню рекомендуемый способ открытия меню — вызвать popup(). Если положение не указано явно, меню размещается в курсоре мыши на платформах рабочего стола, где доступен курсор мыши, а в противном случае — по центру над элементом-родителем.
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button === Qt.RightButton)
contextMenu.popup()
}
onPressAndHold: {
if (mouse.source === Qt.MouseEventNotSynthesized)
contextMenu.popup()
}
Menu {
id: contextMenu
MenuItem { text: "Cut" }
MenuItem { text: "Copy" }
MenuItem { text: "Paste" }
}
} При использовании в качестве всплывающего меню проще всего указать положение, указав желаемые координаты x и y с помощью соответствующих свойств и вызвать open() для открытия меню.
Button {
id: fileButton
text: "File"
onClicked: menu.open()
Menu {
id: menu
y: fileButton.height
MenuItem {
text: "New..."
}
MenuItem {
text: "Open..."
}
MenuItem {
text: "Save"
}
}
} С QtQuick.Controls 2.3 (Qt 5.10) также можно создавать подменю и объявлять объекты Action внутри Menu:
Menu {
Action { text: "Cut" }
Action { text: "Copy" }
Action { text: "Paste" }
MenuSeparator { }
Menu {
title: "Find/Replace"
Action { text: "Find Next" }
Action { text: "Find Previous" }
Action { text: "Replace" }
}
} Подменю по умолчанию являются каскадными на платформах рабочего стола, где доступен курсор мыши. Некаскадные меню отображаются по одному за раз и центрируются над родительским меню.
Как правило, пункты меню статически объявляются как дочерние элементы меню, но Menu также предоставляет API для добавления, вставки, перемещения и удаления элементов динамически. Элементы меню можно получить с помощью itemAt() или contentChildren.
Хотя MenuItems чаще всего используются с Menu, оно может содержать любые типы элементов.
См. также Настройка меню, MenuItem, Элементы управления меню и Элементы управления всплывающими окнами.
Документация по свойствам
cascade : bool
Это свойство определяет, будет ли меню каскадировать свои подменю.
Значение по умолчанию зависит от платформы. Меню по умолчанию являются каскадными на платформах рабочего стола, где доступен курсор мыши. Некаскадные меню отображаются по одному за раз и центрируются над родительским меню.
Примечание: Изменение значения свойства не оказывает влияния, пока меню открыто.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также overlap.
[default] contentData : list<Object>
Это свойство содержит список данных содержимого.
Список содержит все объекты, объявленные в QML как дочерние элементы меню, а также элементы, которые были динамически добавлены или вставлены с помощью методов addItem() и insertItem() соответственно.
Примечание: В отличие от contentChildren, contentData включает в себя невизуальные объекты QML. Он не переупорядочивается при вставке или перемещении элементов.
См. также Item::data и contentChildren.
[только для чтения] contentModel : модель
Это свойство содержит модель, используемую для отображения элементов меню.
Модель содержимого предоставляется для визуализации. Её можно назначить в качестве модели элементу содержимого, представляющему содержимое меню.
Menu {
id: menu
contentItem: ListView {
model: menu.contentModel
}
} Модель позволяет статически объявлять элементы меню как дочерние элементы меню.
[только для чтения] count : int
Это свойство содержит количество элементов.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
currentIndex : int
Это свойство содержит индекс текущего выделенного элемента.
Элементы меню могут быть выделены при наведении курсора мыши или навигации с помощью клавиатуры.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также MenuItem::highlighted.
delegate : Component
Это свойство содержит компонент, который используется для создания элементов для представления действий.
Menu {
Action { text: "Cut" }
Action { text: "Copy" }
Action { text: "Paste" }
} Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также Action.
overlap : real
Это свойство определяет количество пикселей, на которое меню горизонтально перекрывает родительское меню.
Свойство имеет эффект только при использовании меню в качестве каскадного подменю.
Значение по умолчанию зависит от стиля.
Примечание: Изменение значения свойства не оказывает влияния, пока меню открыто.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также cascade.
title : string
Это свойство содержит заголовок меню.
Заголовок меню часто отображается в тексте элемента меню, когда меню является подменю, и в тексте кнопки инструмента, когда оно находится в строке меню.
Документация по методам
Открывает меню в указанной позиции x, y в системе координат всплывающего меню, то есть координата относительно его элемента parent.
Меню можно дополнительно выровнять по конкретному элементу меню item.
Данная документация была добавлена в QtQuick.Controls 2.3 (Qt 5.10).
См. также dismiss() и Popup::open().
Открывает меню в указанной позиции pos в системе координат всплывающего меню, то есть координата относительно его элемента parent.
Меню можно дополнительно выровнять по конкретному элементу меню item.
Данная документация была добавлена в QtQuick.Controls 2.3 (Qt 5.10).
См. также Popup::open().
void popup(MenuItem item = null)
Открывает меню в позиции курсора мыши на платформах с поддержкой мыши, а в противном случае центрирует меню над элементом parent.
Меню можно дополнительно выровнять по конкретному элементу меню item.
Данная документация была добавлена в QtQuick.Controls 2.3 (Qt 5.10).
См. также Popup::open().
Возвращает действие в позиции index, или null если индекс некорректен или действия в указанной позиции нет.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void addAction(Action action)
Добавляет action в конец этого меню.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void addItem(Item item)
Добавляет item в конец списка элементов.
void addMenu(Menu menu)
Добавляет menu как подменю в конец этого меню.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void dismiss()
Закрывает все меню в иерархии, к которой принадлежит это меню.
Примечание: В отличие от close(), который закрывает только меню и его подменю, dismiss() закрывает всю иерархию меню, включая родительские меню. На практике, close() подходит, например, для реализации навигации в иерархии меню, а dismiss() — для закрытия всей иерархии меню.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
См. также popup() и Popup::close().
void insertAction(int index, Action action)
Вставляет action в позицию index. Индекс учитывает все элементы в меню.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void insertItem(int index, Item item)
Вставляет item в позицию index.
void insertMenu(int index, Menu menu)
Вставляет menu как подменю в позицию index. Индекс учитывает все элементы в меню.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
Возвращает элемент в позиции index, или null если его нет.
Возвращает подменю в позиции index, или null если индекс некорректен или подменю в указанной позиции нет.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void moveItem(int from, int to)
Перемещает элемент from в другую позицию to.
void removeAction(Action action)
Удаляет и уничтожает указанное действие action.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void removeItem(Item item)
Удаляет и уничтожает указанный элемент item.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
void removeMenu(Menu menu)
Удаляет и уничтожает указанное подменю menu.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
Удаляет и возвращает действие в позиции index. Индекс учитывает все элементы в меню.
Примечание: Владением действия приобретает вызывающий код.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
Удаляет и возвращает элемент в позиции index.
Примечание: Владением элемента приобретает вызывающий код.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
Удаляет и возвращает подменю в позиции index. Индекс учитывает все элементы в меню.
Примечание: Владением подменю приобретает вызывающий код.
Данный метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qml-qtquick-controls2-menu.html