Тип PieMenu QML
Поп-меню, отображающее несколько пунктов меню по дуге. Подробнее...
| Заявление импорта: | import QtQuick.Extras 1.4 |
| С тех пор: | Qt 5.5 |
| Наследует: |
Свойства
- boundingItem : Элемент
- currentIndex : int
- currentItem : int
- menuItems : список<MenuItem>
- selectionAngle : вещественное
- style : Компонент
- title : строка
- triggerMode : int
Методы
- void addItem(строка text)
- void insertItem(int before, строка text)
- void popup(вещественное x, вещественное y)
- void removeItem(item)
Подробное описание
Тип PieMenu предоставляет радиальное контекстное меню в качестве альтернативы традиционному меню. Все элементы в PieMenu находятся на одинаковом расстоянии от центра элемента управления.
Заполнение меню
Для создания меню определите по крайней мере один MenuItem как дочерний элемент:
PieMenu {
id: pieMenu
MenuItem {
text: "Action 1"
onTriggered: print("Action 1")
}
MenuItem {
text: "Action 2"
onTriggered: print("Action 2")
}
MenuItem {
text: "Action 3"
onTriggered: print("Action 3")
}
} По умолчанию отображается только текст текущего выбранного элемента над меню. Чтобы предоставить текст, который всегда отображается, когда нет текущего элемента, установите свойство title.
Отображение меню
Типичный сценарий использования меню — открыть его в позиции курсора мыши после щелчка правой кнопкой мыши. Для этого определите MouseArea, который охватывает область, по которой должны открываться меню. При щелчке правой кнопкой мыши в MouseArea вызовите функцию popup():
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
onClicked: pieMenu.popup(mouseX, mouseY)
} Если меню открывается в позиции, где некоторые его элементы меню находятся за пределами boundingItem, оно автоматически перемещается в позицию, где они не будут скрыты. По умолчанию boundingItem устанавливается в родительский элемент меню. Его также можно установить в null для предотвращения этого поведения.
PieMenu можно отобразить в любой позиции на экране. В традиционном контекстном меню меню размещается с верхним левым углом в позиции щелчка правой кнопкой мыши, но поскольку PieMenu радиальный, мы размещаем его по центру над позицией щелчка правой кнопкой мыши.
Чтобы создать PieMenu, который открывается после длительного нажатия и выбирает элементы при отпускании, вы можете объединить ActivationMode.ActivateOnRelease с MouseArea с помощью таймера:
MouseArea {
id: touchArea
anchors.fill: parent
Timer {
id: pressAndHoldTimer
interval: 300
onTriggered: pieMenu.popup(touchArea.mouseX, touchArea.mouseY);
}
onPressed: pressAndHoldTimer.start()
onReleased: pressAndHoldTimer.stop();
}
PieMenu {
id: pieMenu
triggerMode: TriggerMode.TriggerOnRelease
MenuItem {
text: "Action 1"
onTriggered: print("Action 1")
}
MenuItem {
text: "Action 2"
onTriggered: print("Action 2")
}
MenuItem {
text: "Action 3"
onTriggered: print("Action 3")
}
} Вы можете скрыть отдельные элементы меню, установив их свойство visible в false. Скрытие элементов не влияет на startAngle или endAngle; оставшиеся элементы будут расти, занимая доступное пространство.
Вы можете создать пользовательский вид PieMenu, назначив PieMenuStyle
Документация свойств
boundingItem : Элемент
Элемент, внутри которого должно находиться меню.
Типичный сценарий использования PieMenu включает:
- MouseArea, определяющий область нажатия, в пределах которой можно открыть меню.
- Пределы, за которые не должно выходить меню.
Хотя они звучат похоже, у них разные цели. Рассмотрим пример ниже:
Пользователь может открывать меню только внутри внутреннего прямоугольника. В этом случае они открыли меню на краю MouseArea, но не было достаточно места для отображения всего меню, центрированного на позиции курсора, поэтому оно было перемещено влево.
Если по какой-то причине мы этого не хотим, мы можем установить boundingItem в null:
По умолчанию родительский элемент меню является boundingItem.
[только для чтения] currentIndex : int
Индекс элемента меню, который в данный момент находится под указателем мыши, или -1 если такого элемента нет.
[только для чтения] currentItem : int
Элемент меню, который в данный момент находится под указателем мыши, или null если такого элемента нет.
[по умолчанию] menuItems : список<MenuItem>
Список элементов меню, отображаемых этим меню.
Вы можете назначить элементы меню, объявив их как дочерние элементы PieMenu:
PieMenu {
MenuItem {
text: "Action 1"
onTriggered: function() { print("Action 1"); }
}
MenuItem {
text: "Action 2"
onTriggered: function() { print("Action 2"); }
}
MenuItem {
text: "Action 3"
onTriggered: function() { print("Action 3"); }
}
} [только для чтения] selectionAngle : вещественное
Это свойство отражает угол (в радианах), образованный воображаемой линией от центра меню до положения курсора.
Его значение не определено, когда меню не отображается.
style : Компонент
Стиль Component для этого элемента управления.
См. также Типы QML стилей Qt Quick Controls.
title : строка
Это свойство определяет текст, который отображается над меню, когда нет текущего элемента меню (currentIndex равен -1).
Значение по умолчанию — "" (пустая строка).
triggerMode : int
Это свойство определяет метод выбора элементов в меню.
- triggerMode со значением TriggerMode.TriggerOnPress означает, что элементы меню будут выбираться только при нажатии на них клавишей мыши.
- triggerMode со значением TriggerMode.TriggerOnRelease означает, что элементы меню будут выбираться только при отпускании клавиши мыши над ними. Это означает, что пользователь должен удерживать кнопку мыши после открытия меню и отпустить её над элементом, который он хочет выбрать.
- triggerMode со значением TriggerMode.TriggerOnClick означает, что элементы меню будут выбираться только при однократном щелчке по ним.
Предупреждение: Изменение triggerMode во время видимости меню приведет к неопределенному поведению.
Документация методов
void addItem(строка text)
Добавляет элемент в конец элементов меню.
Эквивалентно вызову insertItem(menuItems.length, text).
Возвращает вновь добавленный элемент.
void insertItem(int before, строка text)
Вставляет MenuItem с text перед индексом before.
Чтобы вставить элемент в конец, передайте menuItems.length.
Возвращает вставленный элемент или null если before недействителен.
void popup(вещественное x, вещественное y)
Открывает меню в координатах x, y.
void removeItem(item)
Удаляет item из меню.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qml-qtquick-extras-piemenu.html