Spec-Zone.ru › Qt

Тип QML меню

Меню-попап, которое можно использовать в качестве контекстного меню или всплывающего меню. Подробнее...

Оператор импорта: import QtQuick.Controls
С тех пор: Qt 5.7
Наследует:

Popup

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

Свойства

  • cascade : bool
  • contentData : список<Объект>
  • contentModel : модель
  • count : int
  • currentIndex : int
  • delegate : Компонент
  • focus : bool
  • overlap : real
  • 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(real x, real y, MenuItem item)
  • void popup(Элемент parent, real x, real y, MenuItem item)
  • void popup(точка pos, MenuItem item)
  • void popup(Элемент parent, точка pos, MenuItem item)
  • void popup(MenuItem item)
  • void popup(Элемент parent, MenuItem item)
  • void removeAction(Действие action)
  • void removeItem(Элемент item)
  • void removeMenu(Меню menu)
  • Действие takeAction(int index)
  • MenuItem 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 {
    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" }
    }
}

Подменю по умолчанию являются каскадными на настольных платформах с указателем мыши. Некаскадные меню отображаются по одному за раз и центрируются над родительским меню.

Обычно пункты меню объявляются статически в качестве дочерних элементов меню, но меню также предоставляет API для добавления, вставки, перемещения и удаления пунктов динамически. К пунктам меню можно получить доступ с помощью itemAt() или contentChildren.

Хотя MenuItem наиболее часто используются с меню, оно может содержать любой тип элементов.

Поля

Поскольку оно унаследовано от Popup, меню поддерживает поля. По умолчанию все встроенные стили задают 0 для полей меню, чтобы гарантировать, что меню остается в пределах окна. Чтобы позволить меню выходить за пределы окна (например, для анимации его перемещения в область видимости), установите свойство полей в -1.

См. также Настройка меню, MenuItem, Управление меню и Управление всплывающими окнами.

Документация по свойствам

[с QtQuick.Controls 2.3 (Qt 5.10)] 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
    }
}

Модель позволяет статически объявлять пункты меню как дочерние элементы меню.

[только для чтения, с QtQuick.Controls 2.3 (Qt 5.10)] count : int

Это свойство содержит количество элементов.

Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).

[с QtQuick.Controls 2.3 (Qt 5.10)] currentIndex : int

Это свойство содержит индекс текущего выделенного элемента.

Элементы меню можно выделить с помощью наведения курсора мыши или навигации с помощью клавиатуры.

Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).

См. также MenuItem::highlighted.

[с QtQuick.Controls 2.3 (Qt 5.10)] 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.

[с QtQuick.Controls 2.3 (Qt 5.10)] overlap : real

Это свойство задаёт количество пикселей, на которое меню горизонтально перекрывает своё родительское меню.

Это свойство эффективно только когда меню используется как каскадное подменю.

Значение по умолчанию зависит от стиля.

Примечание: Изменение значения свойства не имеет эффекта, пока меню открыто.

Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).

См. также cascade.

title : строка

Это свойство задаёт заголовок для меню.

Заголовок меню часто отображается в тексте пункта меню, когда меню является подменю, и в тексте кнопки инструмента, когда оно находится в строке меню.

Документация по методам

[since QtQuick.Controls 2.3 (Qt 5.10)] void popup(Item parent, real x, real y, MenuItem item = null)

Открывает меню в указанной позиции x, y в системе координат всплывающих окон, то есть координаты относительно элемента parent.

Меню можно дополнительно выровнять по определённому пункту меню item.

Этот метод QML был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

См. также dismiss() и Popup::open().

[since QtQuick.Controls 2.3 (Qt 5.10)] void popup(Item parent, точка pos, MenuItem item = null)

Открывает меню в указанной позиции pos в системе координат всплывающих окон, то есть координаты относительно элемента parent.

Меню можно дополнительно выровнять по определённому пункту меню item.

Этот QML метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

См. также Popup::open().

[since QtQuick.Controls 2.3 (Qt 5.10)] void popup(Item parent, MenuItem item = null)

Открывает меню в позиции курсора мыши на платформах с поддержкой курсора мыши, в противном случае центрирует меню над элементом parent.

Меню можно дополнительно выровнять по определённому пункту меню item.

Этот QML метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

См. также Popup::open().

[since QtQuick.Controls 2.3 (Qt 5.10)] Действие actionAt(int index)

Возвращает действие в позиции index, или null если индекс недействителен или действия в указанной позиции нет.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] void addAction(Действие action)

Добавляет action в конец этого меню.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

void addItem(Item item)

Добавляет item в конец списка элементов.

[since QtQuick.Controls 2.3 (Qt 5.10)] void addMenu(Меню menu)

Добавляет menu как подменю в конец этого меню.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] void dismiss()

Закрывает все меню в иерархии, к которой принадлежит это меню.

Примечание: В отличие от close(), которое закрывает только меню и его подменю, dismiss() закрывает всю иерархию меню, включая родительские меню. На практике, close() подходит, например, для реализации навигации в иерархии меню, а dismiss() — подходящий метод для закрытия всей иерархии меню.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

См. также popup() и Popup::close().

[since QtQuick.Controls 2.3 (Qt 5.10)] void insertAction(int index, Действие action)

Вставляет action в позицию index. Индекс находится внутри всех элементов в меню.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

void insertItem(int index, Item item)

Вставляет item в позицию index.

[since QtQuick.Controls 2.3 (Qt 5.10)] void insertMenu(int index, Меню menu)

Вставляет menu как подменю в позицию index. Индекс находится внутри всех элементов в меню.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

Item itemAt(int index)

Возвращает элемент в позиции index, или null если он не существует.

[since QtQuick.Controls 2.3 (Qt 5.10)] Меню menuAt(int index)

Возвращает подменю в позиции index, или null если индекс недействителен или подменю в указанной позиции нет.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

void moveItem(int from, int to)

Перемещает элемент from в другую позицию to.

[since QtQuick.Controls 2.3 (Qt 5.10)] void removeAction(Действие action)

Удаляет и уничтожает указанное действие.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] void removeItem(Item item)

Удаляет и уничтожает указанный элемент.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] void removeMenu(Меню menu)

Удаляет и уничтожает указанное меню.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] Действие takeAction(int index)

Удаляет и возвращает действие в позиции index. Индекс находится внутри всех элементов в меню.

Примечание: Владение действием передаётся вызывающей стороне.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] MenuItem takeItem(int index)

Удаляет и возвращает элемент в позиции index.

Примечание: Владение элементом передаётся вызывающей стороне.

Этот метод был добавлен в QtQuick.Controls 2.3 (Qt 5.10).

[since QtQuick.Controls 2.3 (Qt 5.10)] Меню takeMenu(int index)

Удаляет и возвращает меню в позиции 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-6.2/qml-qtquick-controls2-menu.html

Spec-Zone.ru

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