Spec-Zone.ru › Qt 5.11

Тип QML Menu

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

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

Popup

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

Свойства

  • cascade : bool
  • contentData : список<Объект>
  • contentModel : модель
  • count : int
  • currentIndex : int
  • delegate : Компонент
  • overlap : вещественное
  • 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(Элемент parent, вещественное x, вещественное y, MenuItem item = null)
  • void popup(вещественное x, вещественное y, MenuItem item = null)
  • void popup(Элемент parent, точка pos, MenuItem item = null)
  • void popup(точка pos, MenuItem item = null)
  • void popup(Элемент parent, MenuItem item = null)
  • void popup(MenuItem item = null)
  • 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:

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.

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

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

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

cascade : bool

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

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

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

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

См. также overlap.

[default] contentData : list<Объект>

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

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

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

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

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

См. также Действие.

overlap : вещественное

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

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

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

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

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

См. также cascade.

title : строка

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

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

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

Действие 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 popup(Item parent, real x, real y, MenuItem item = null)

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

void popup(Item parent, point pos, MenuItem item = null)

void popup(point pos, MenuItem item = null)

void popup(Item parent, MenuItem item = null)

void popup(MenuItem item = null)

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/archives/qt-5.11/qml-qtquick-controls2-menu.html

Spec-Zone.ru

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