QML-тип ContextMenu
Предоставляет контекстное меню. Подробнее…
Строка импорта: | import Sailfish.Silica 1.0 |
Наследуется от: | Item |
Свойства
- active : bool
- closeOnActivation : bool
- container : Item
- hasContent : bool
Сигналы
- closed()
- onActivated(int index)
Методы
Подробное описание
Тип ContextMenu
предоставляет контекстное меню.
Контекстное меню — это меню, которое отображается под указанным элементом посредством вызова метода
show()
. Пункты меню задаются в дочерних элементах типа MenuItem.
Контекстные меню чаще всего используются для отображения пунктов меню для отдельных элементов списка. В примере ниже продемонстрировано использование свойства menu типа ListItem, которое отображает контекстное меню для каждого отдельно взятого элемента списка при выполнении жеста «нажать и удерживать» (press-and-hold):
import QtQuick 2.2
import Sailfish.Silica 1.0
Page {
SilicaListView {
anchors.fill: parent
model: ListModel {
id: listModel
Component.onCompleted: {
for (var i=0; i<10; i++) {
append({"name": "Элемент " + i})
}
}
}
delegate: ListItem {
width: ListView.view.width
Label {
id: label
text: model.name
anchors.centerIn: parent
}
menu: ContextMenu {
MenuItem {
text: "Переключить полужирный шрифт"
onClicked: label.font.bold = !label.font.bold
}
MenuItem {
text: "Удалить"
onClicked: listModel.remove(model.index)
}
}
}
}
}
Предупреждение: высота элементов типа ContextMenu автоматически изменяется в зависимости от того, открыто контекстное меню или нет. Поэтому не следует явным образом устанавливать или изменять высоту контекстного меню. Также не следует прикреплять верхнюю и нижнюю границы контекстного меню к другим элементам, так как в противном случае меню не будет корректно открываться и закрываться.
См. также MenuItem, PullDownMenu и PushUpMenu.
Описание свойств
active : bool
Определяет, показывается ли меню в данный момент.
closeOnActivation : bool
При значении свойства, равном true
, меню будет автоматически закрываться при нажатии на дочерний элемент типа
MenuItem.
Значение по умолчанию: true
.
container : Item
Содержит ссылку на родительский контейнер, который будет использоваться при вычислении значения свойства contentY
элемента с прокруткой (типы Flickable
).
Обычно, если меню открывается внутри элемента с прокруткой по вертикали, свойство contentY
этого элемента изменяется
так, чтобы содержимое сдвинулось вверх для отображения меню. Если свойство container
задано, то его границы
учитываются при вычислении значения свойства contentY
. Это удобно, если меню должно выйти за границы видимой области
элемента с прокруткой.
По умолчанию данное значение равно null
.
hasContent : bool
Определяет, есть ли содержимое в контекстном меню, которое можно показать при его открытии. При значении false
контекстное меню не будет открыто.
Значение по умолчанию равно true
, если в пункте меню (в контейнере MenuItem
) содержатся дочерние элементы.
Следует обратить внимание, что такая эвристика будет некорректной, если в меню содержатся дочерние элементы, которые
невозможно отобразить (например, пустой элемент типа Repeater
).
Описание сигналов
closed()
Вызывается по завершении анимации закрытия.
onActivated(int index)
Вызывается при нажатии на дочерний элемент типа MenuItem. Значение параметра index — это индекс пункта меню, который был нажат.
Описание методов
close()
Закрывает меню.
См. также open.
open(Item item)
Показывает меню, прикрепленное к нижней границе указанного родительского элемента item. Если элемент
ContextMenu
находится внутри контейнера с прокруткой, то для этого элемента будет выбрано такое
положение, чтобы контекстное меню было полностью показано на экране.
См. также close.