Spec-Zone.ru › Qt 5.12

Тип QML Menu

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

Заявление об импорте: import QtQuick.Controls 2.5
С тех пор: Qt 5.7
Наследует:

Popup

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

Свойства

  • cascade : bool
  • contentData : list<Object>
  • contentModel : модель
  • count : int
  • currentIndex : int
  • delegate : Компонент
  • overlap : вещественное
  • title : строка

Методы

  • Действие actionAt(int index)
  • void addAction(Action action)
  • void addItem(Item item)
  • void addMenu(Menu menu)
  • void dismiss()
  • void insertAction(int index, Action action)
  • void insertItem(int index, Item item)
  • void insertMenu(int index, Menu menu)
  • Item itemAt(int index)
  • Menu menuAt(int index)
  • void moveItem(int from, int to)
  • void popup(MenuItem item = null)
  • void popup(Item parent, MenuItem item = null)
  • void popup(point pos, MenuItem item = null)
  • void popup(Item parent, point pos, MenuItem item = null)
  • void popup(real x, real y, MenuItem item = null)
  • void popup(Item parent, real x, real y, MenuItem item = null)
  • void removeAction(Action action)
  • void removeItem(Item item)
  • void removeMenu(Menu menu)
  • Action takeAction(int index)
  • MenuItem takeItem(int index)
  • Menu 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.

Хотя MenuItems чаще всего используются с Menu, оно может содержать любые типы элементов.

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

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

cascade : bool

Это свойство определяет, будет ли меню каскадировать свои подменю.

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

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

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

См. также overlap.

[default] contentData : list<Object>

Это свойство содержит список данных содержимого.

Список содержит все объекты, объявленные в 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 : Component

Это свойство содержит компонент, который используется для создания элементов для представления действий.

Menu {
    Action { text: "Cut" }
    Action { text: "Copy" }
    Action { text: "Paste" }
}

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

См. также Action.

overlap : real

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

Свойство имеет эффект только при использовании меню в качестве каскадного подменю.

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

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

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

См. также cascade.

title : string

Это свойство содержит заголовок меню.

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

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

void popup(real x, real y, MenuItem item = null)

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

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

Данная документация была добавлена в QtQuick.Controls 2.3 (Qt 5.10).

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

void popup(point pos, MenuItem item = null)

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

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

Данная документация была добавлена в QtQuick.Controls 2.3 (Qt 5.10).

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

void popup(MenuItem item = null)

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

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

Данная документация была добавлена в QtQuick.Controls 2.3 (Qt 5.10).

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

Action actionAt(int index)

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

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

void addAction(Action action)

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

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

void addItem(Item item)

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

void addMenu(Menu menu)

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

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

void dismiss()

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

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

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

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

void insertAction(int index, Action action)

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

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

void insertItem(int index, Item item)

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

void insertMenu(int index, Menu menu)

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

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

Item itemAt(int index)

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

Menu menuAt(int index)

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

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

void moveItem(int from, int to)

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

void removeAction(Action action)

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

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

void removeItem(Item item)

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

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

void removeMenu(Menu menu)

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

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

Action takeAction(int index)

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

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

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

MenuItem takeItem(int index)

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

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

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

Menu 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-5.12/qml-qtquick-controls2-menu.html

Spec-Zone.ru

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