Spec-Zone.ru › Qt 5.11

Тип QML Drag

Для указания событий перетаскивания и перемещения элементов. Подробнее...

Заявление об импорте: import QtQuick 2.11
  • Список всех членов, включая унаследованные

Присоединённые свойства

  • active : bool
  • dragType : перечисление
  • hotSpot : QPointF
  • imageSource : QUrl
  • keys : список строк
  • mimeData : список строк
  • proposedAction : перечисление
  • source : Объект
  • supportedActions : флаги
  • target : Объект

Присоединённые сигналы

  • dragFinished(DropAction dropAction)
  • dragStarted()

Присоединённые методы

  • void cancel()
  • перечисление drop()
  • void start(флаги supportedActions)
  • void startDrag(флаги supportedActions)

Подробное описание

С помощью присоединенного свойства Drag любой элемент Item может быть источником событий перетаскивания и перемещения в сцене.

Когда перетаскивание активно на элементе, любое изменение его положения сгенерирует событие перетаскивания, которое будет отправлено любому DropArea, пересекающемуся с новым положением элемента. Другие элементы, которые реализуют обработчики событий перетаскивания, также могут получать эти события.

Следующий фрагмент кода показывает, как элемент можно перетаскивать с помощью MouseArea. Однако перетаскивание не ограничивается перетаскиванием мышью; всё, что может перемещать элемент, может генерировать события перетаскивания, включая события касания, анимации и привязки.

import QtQuick 2.0

Item {
    width: 200; height: 200

    DropArea {
        x: 75; y: 75
        width: 50; height: 50

        Rectangle {
            anchors.fill: parent
            color: "green"

            visible: parent.containsDrag
        }
    }

    Rectangle {
        x: 10; y: 10
        width: 20; height: 20
        color: "red"

        Drag.active: dragArea.drag.active
        Drag.hotSpot.x: 10
        Drag.hotSpot.y: 10

        MouseArea {
            id: dragArea
            anchors.fill: parent

            drag.target: parent
        }
    }
}

Перетаскивание может быть завершено, либо отменив его с помощью Drag.cancel() или установив Drag.active в значение false, либо завершив его с помощью события отпускания, вызвав Drag.drop(). Если событие отпускания принято, Drag.drop() вернёт выбранное целевым элементом действие отпускания, в противном случае вернётся Qt.IgnoreAction.

См. также Примеры Qt Quick — Перетаскивание и перемещение и Примеры Qt Quick — externaldraganddrop.

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

Drag.active : bool

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

Привязка этого свойства к свойству active MouseArea::drag вызовет startDrag при начале перетаскивания пользователем.

Установка этого свойства в значение true также отправит событие QDragEnter в сцену с текущим положением элемента. Установка в значение false отправит событие QDragLeave.

Пока активен процесс перетаскивания, любое изменение положения элемента отправит событие QDragMove со новым положением элемента в сцену.

Drag.dragType : перечисление

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

Перетаскивание также может быть начато вручную с помощью startDrag.

  • Drag.None — не запускать перетаскивания автоматически
  • Drag.Automatic — запускать перетаскивания автоматически
  • Drag.Internal (по умолчанию) — запускать обратные совместимые перетаскивания автоматически

При использовании Drag.Automatic также необходимо определить mimeData и привязать свойство active к свойству active MouseArea : MouseArea::drag.active

Это свойство было введено в Qt 5.2.

Drag.hotSpot : QPointF

Это свойство хранит положение перетаскивания относительно левого верхнего угла элемента.

По умолчанию это (0, 0).

Изменения в hotSpot запускают новое перемещение перетаскивания с обновленным положением.

Drag.imageSource : QUrl

Это свойство хранит URL изображения, которое будет использоваться для представления данных во время операции перетаскивания и перемещения. Изменение этого свойства после начала операции перетаскивания не повлияет на результат.

В примере ниже содержимое элемента используется как изображение перетаскивания:

import QtQuick 2.8

Item {
    width: 200; height: 200

    Rectangle {
        anchors.centerIn: parent
        width: text.implicitWidth + 20; height: text.implicitHeight + 10
        color: "green"
        radius: 5

        Drag.active: dragArea.drag.active
        Drag.dragType: Drag.Automatic
        Drag.supportedActions: Qt.CopyAction
        Drag.mimeData: {
            "text/plain": "Copied text"
        }

        Text {
            id: text
            anchors.centerIn: parent
            text: "Drag me"
        }

        MouseArea {
            id: dragArea
            anchors.fill: parent

            drag.target: parent
            onPressed: parent.grabToImage(function(result) {
                parent.Drag.imageSource = result.url
            })
        }
    }
}

Это свойство было введено в Qt 5.8.

См. также Item::grabToImage().

Drag.keys : stringlist

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

Изменение ключей во время перетаскивания обнулит последовательность событий перетаскивания, отправив событие drag leave, за которым последует событие drag enter с новым источником.

Drag.mimeData : stringlist

Это свойство хранит карту mimeData, используемую при startDrag.

Это свойство было введено в Qt 5.2.

Drag.proposedAction : перечисление

Это свойство хранит рекомендуемое действие источником перетаскивания в качестве возвращаемого значения от Drag.drop().

Изменения в proposedAction приведут к событию перемещения с обновленным предложением.

Drag.source : Объект

Это свойство хранит объект, который идентифицируется получателями событий перетаскивания как источник событий. По умолчанию это элемент, к которому прикреплено свойство Drag.

Изменение источника во время перетаскивания обнулит последовательность событий перетаскивания, отправив событие drag leave, за которым последует событие drag enter с новым источником.

Drag.supportedActions : флаги

Это свойство хранит возвращаемые значения Drag.drop(), поддерживаемые источником перетаскивания.

Изменение supportedActions во время перетаскивания обнулит последовательность событий перетаскивания, отправив событие drag leave, за которым последует событие drag enter с новым источником.

Drag.target : Объект

Пока активен процесс перетаскивания, это свойство хранит последний объект, принявший событие enter от перетаскиваемого элемента, если текущее положение перетаскивания не пересекает ни одного принимающего целевого объекта, то оно равно null.

Когда процесс перетаскивания не активен, это свойство хранит объект, который принял событие отпускания, завершив перетаскивание; если ни один объект не принял событие отпускания или перетаскивание было отменено, target будет null.

Документация по присоединённым сигналам

dragFinished(DropAction dropAction)

Этот сигнал испускается при завершении перетаскивания, и перетаскивание было начато с помощью метода startDrag() или начато автоматически с помощью свойства dragType.

Соответствующий обработчик — onDragFinished.

dragStarted()

Этот сигнал испускается при начале перетаскивания с помощью метода startDrag() или когда оно началось автоматически с помощью свойства dragType.

Соответствующий обработчик — onDragStarted.

Документация по присоединённым методам

void cancel()

Завершает последовательность перетаскивания.

перечисление drop()

Завершает последовательность перетаскивания, отправив событие отпускания целевому элементу.

Возвращает действие, принятое целевым элементом. Если целевой элемент или родительский элемент не принимает событие отпускания, возвращается Qt.IgnoreAction.

Возвращаемое действие отпускания может быть одним из следующих:

  • Qt.CopyAction Скопировать данные в целевой элемент
  • Qt.MoveAction Переместить данные из источника в целевой элемент
  • Qt.LinkAction Создать ссылку от источника к целевому элементу.
  • Qt.IgnoreAction Игнорировать действие (ничего не делать с данными).

void start(флаги supportedActions)

Начинает отправку событий перетаскивания. Используется для запуска перетаскиваний старого стиля. startDrag — новый стиль, предпочтительный метод запуска перетаскиваний.

Необязательный аргумент supportedActions может быть использован для переопределения свойства supportedActions для начатой последовательности.

void startDrag(флаги supportedActions)

Начинает отправку событий перетаскивания.

Дополнительный аргумент supportedActions может быть использован для переопределения свойства supportedActions для начатой последовательности.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtquick-drag.html

Spec-Zone.ru

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