Тип QML Меню
Выпадающее меню, которое можно использовать в качестве контекстного меню или всплывающего меню. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 2.15 |
| С тех пор: | Qt 5.7 |
| Наследует: |
Свойства
- cascade : bool
- contentData : список<Объект>
- contentModel : модель
- count : int
- currentIndex : int
- delegate : Компонент
- focus : bool
- overlap : вещественное число
- title : строка
Методы
- Действие actionAt(int index)
- void addAction(Действие action)
- void addItem(Элемент item)
- void addMenu(Меню menu)
- void dismiss()
- void insertAction(int index, Действие action)
- void insertItem(int index, Элемент item)
- void insertMenu(int index, Меню menu)
- Элемент itemAt(int index)
- Меню menuAt(int index)
- void moveItem(int from, int to)
- void popup(вещественное число x, вещественное число y, ЭлементМеню item)
- void popup(Элемент parent, вещественное число x, вещественное число y, ЭлементМеню item)
- void popup(точка pos, ЭлементМеню item)
- void popup(Элемент parent, точка pos, ЭлементМеню item)
- void popup(ЭлементМеню item)
- void popup(Элемент parent, ЭлементМеню item)
- void removeAction(Действие action)
- void removeItem(Элемент item)
- void removeMenu(Меню menu)
- Действие takeAction(int index)
- ЭлементМеню takeItem(int index)
- Меню 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.
Хотя ЭлементыМеню чаще всего используются с Menu, он может содержать любой тип элемента.
Поля
Поскольку это наследуется от Popup, Menu поддерживает поля. По умолчанию все встроенные стили указывают 0 для полей Menu, чтобы убедиться, что меню находится в пределах окна. Чтобы разрешить меню выходить за пределы окна (например, для анимации его перемещения в область видимости), установите свойство полей в -1.
См. также Настройка меню, ЭлементМеню, Элементы управления меню и Элементы управления всплывающими окнами.
Документация по свойствам
cascade : bool
Это свойство указывает, будет ли меню каскадировать свои подменю.
Значение по умолчанию зависит от платформы. Меню каскадные по умолчанию на платформах настольных ПК, на которых доступен указатель мыши. Некаскадные меню отображаются по одному за раз и центрируются над родительским меню.
Примечание: Изменение значения свойства не оказывает никакого влияния, пока меню открыто.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также overlap.
[по умолчанию] contentData : список<Объект>
Это свойство содержит список данных содержимого.
Список содержит все объекты, которые были объявлены в 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 : Компонент
Это свойство содержит компонент, используемый для создания элементов для представления действий.
Menu {
Action { text: "Cut" }
Action { text: "Copy" }
Action { text: "Paste" }
} Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также Действие.
focus : bool
Это свойство указывает, хочет ли всплывающее окно получить фокус.
Когда всплывающее окно фактически получает фокус, activeFocus будет true. Дополнительную информацию см. в Фокус клавиатуры в Qt Quick.
Значение по умолчанию равно false.
См. также activeFocus.
overlap : вещественное число
Это свойство содержит количество пикселей, на которое меню горизонтально перекрывает родительское меню.
Свойство действует только когда меню используется как каскадное подменю.
Значение по умолчанию зависит от стиля.
Примечание: Изменение значения свойства не оказывает влияния, пока меню открыто.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также cascade.
title : строка
Это свойство содержит заголовок для меню.
Заголовок меню часто отображается в тексте пункта меню, когда меню является подменю, и в тексте кнопки инструмента, когда оно находится в строке меню.
Документация по методам
пусто popup(Элемент parent, вещественное x, вещественное y, ПунктМеню item = null)
Открывает меню в заданной позиции x, y в системе координат всплывающих элементов, то есть координатах относительно его элемента parent.
Меню можно дополнительно выровнять по конкретному пункту меню item.
Этот QML-метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
См. также dismiss() и Popup::open().
Открывает меню в заданной позиции pos в системе координат всплывающих элементов, то есть координатах относительно его элемента parent.
Меню можно дополнительно выровнять по конкретному пункту меню item.
Этот QML-метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
См. также Popup::open().
Открывает меню в позиции курсора мыши на настольных платформах, имеющих доступный курсор мыши, в противном случае центрирует меню над элементом parent.
Меню можно дополнительно выровнять по конкретному пункту меню item.
Этот QML-метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
См. также Popup::open().
Действие actionAt(целое index)
Возвращает действие по индексу index, или null если индекс недействителен или действия по указанному индексу нет.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто addAction(Действие action)
Добавляет action в конец этого меню.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто addItem(Элемент item)
Добавляет item в конец списка элементов.
пусто addMenu(Меню menu)
Добавляет menu как подменю в конец этого меню.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто dismiss()
Закрывает все меню в иерархии, к которой принадлежит это меню.
Примечание: В отличие от close(), которое закрывает только меню и его подменю, dismiss() закрывает всю иерархию меню, включая родительские меню. На практике close() подходит, например, для реализации навигации в иерархии меню, а dismiss() является подходящим методом для закрытия всей иерархии меню.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
См. также popup() и Popup::close().
пусто insertAction(целое index, Действие action)
Вставляет action по индексу index. Индекс находится внутри всех элементов в меню.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто insertItem(целое index, Элемент item)
Вставляет item по индексу index.
пусто insertMenu(целое index, Меню menu)
Вставляет menu как подменю по индексу index. Индекс находится внутри всех элементов в меню.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
Возвращает элемент по индексу index, или null если его нет.
Возвращает подменю по индексу index, или null если индекс недействителен или подменю по указанному индексу нет.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто moveItem(целое from, целое to)
Перемещает элемент from в другой индекс to.
пусто removeAction(Действие action)
Удаляет и уничтожает указанное action.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто removeItem(Элемент item)
Удаляет и уничтожает указанный item.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
пусто removeMenu(Меню menu)
Удаляет и уничтожает указанное menu.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
Действие takeAction(целое index)
Удаляет и возвращает действие по индексу index. Индекс находится внутри всех элементов в меню.
Примечание: Владение действием передается вызывающей стороне.
Этот метод был введен в QtQuick.Controls 2.3 (Qt 5.10).
ПунктМеню takeItem(целое index)
Удаляет и возвращает элемент по индексу 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.15/qml-qtquick-controls2-menu.html