Spec-Zone.ru › Qt 5.13

Тип QML Menu

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

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

Popup

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

Свойства

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

Методы

  • Действие actionAt(index)
  • void addAction(action)
  • void addItem(item)
  • void addMenu(menu)
  • void dismiss()
  • void insertAction(index, Действие action)
  • void insertItem(index, Элемент item)
  • void insertMenu(index, Меню menu)
  • Элемент itemAt(index)
  • Меню menuAt(index)
  • void moveItem(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(index)
  • MenuItem takeItem(index)
  • Меню takeMenu(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<Объект>

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

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

focus : bool

Это свойство указывает, хочет ли всплывающее окно фокус.

Когда всплывающее окно фактически получает фокус, активныйФокус будет true. Для получения дополнительной информации см. Фокус клавиатуры в Qt Quick.

Значение по умолчанию false.

См. также activeFocus.

overlap : real

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

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

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

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

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

См. также cascade.

title : string

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

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

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

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

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

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

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

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

void popup(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(index)

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

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

void addAction(action)

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

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

void addItem(item)

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

void addMenu(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(index, Action action)

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

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

void insertItem(index, Item item)

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

void insertMenu(index, Menu menu)

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

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

Item itemAt(index)

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

Menu menuAt(index)

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

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

void moveItem(from, int to)

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

void removeAction(action)

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

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

void removeItem(item)

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

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

void removeMenu(menu)

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

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

Action takeAction(index)

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

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

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

MenuItem takeItem(index)

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

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

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

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

Spec-Zone.ru

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