Spec-Zone.ru › Qt 6.1

Тип QML Menu

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

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

Popup

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

Свойства

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

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

Отступы

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

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

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

[с 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.

[since QtQuick.Controls 2.3 (Qt 5.10)] overlap : вещественное

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

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

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

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

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

См. также cascade.

title : строка

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

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

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

пустое popup(Элемент parent, вещественное x, вещественное y, ПунктМеню item = null)

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

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

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

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

пустое popup(Элемент parent, точка pos, ПунктМеню item = null)

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

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

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

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

пустое popup(Элемент parent, ПунктМеню item = null)

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

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

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

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

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

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

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

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

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

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

пустое addItem(Элемент item)

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

[since QtQuick.Controls 2.3 (Qt 5.10)] пустое addMenu(Меню menu)

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

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

[since QtQuick.Controls 2.3 (Qt 5.10)] пустое dismiss()

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

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

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

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

[since QtQuick.Controls 2.3 (Qt 5.10)] пустое insertAction(целое index, Действие action)

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

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

пустое insertItem(целое index, Элемент item)

Вставляет item по индексу index.

[since QtQuick.Controls 2.3 (Qt 5.10)] пустое insertMenu(целое index, Меню menu)

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

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

Элемент itemAt(целое index)

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

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

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

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

пустое moveItem(целое from, целое to)

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

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

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

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

[since QtQuick.Controls 2.3 (Qt 5.10)] пустое removeItem(Элемент item)

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

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

[since QtQuick.Controls 2.3 (Qt 5.10)] пустое removeMenu(Меню menu)

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

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

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

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

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

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

[since QtQuick.Controls 2.3 (Qt 5.10)] ПунктМеню takeItem(целое index)

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

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

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

[since QtQuick.Controls 2.3 (Qt 5.10)] Меню 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-6.1/qml-qtquick-controls2-menu.html

Spec-Zone.ru

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