Spec-Zone.ru › Qt 5.9

Тип PieMenu QML

Поп-меню, отображающее несколько пунктов меню по дуге. Подробнее...

Заявление импорта: import QtQuick.Extras 1.4
С тех пор: Qt 5.5
Наследует:

FocusScope

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Свойства

  • 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)

Подробное описание

A PieMenu

Тип 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, определяющий область нажатия, в пределах которой можно открыть меню.
  • Пределы, за которые не должно выходить меню.

Хотя они звучат похоже, у них разные цели. Рассмотрим пример ниже:

Canvas boundingItem example

Пользователь может открывать меню только внутри внутреннего прямоугольника. В этом случае они открыли меню на краю MouseArea, но не было достаточно места для отображения всего меню, центрированного на позиции курсора, поэтому оно было перемещено влево.

Если по какой-то причине мы этого не хотим, мы можем установить boundingItem в null:

Canvas null boundingItem example

По умолчанию родительский элемент меню является 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API