Spec-Zone.ru › Qt 5.9

Тип QML Drag

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

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

Прикреплённые свойства

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

Прикреплённые сигналы

  • dragFinished(DropAction dropAction)
  • dragStarted()

Прикреплённые методы

  • void cancel()
  • перечисление drop()
  • void start(flags supportedActions)
  • void startDrag(flags 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

Это свойство QML было добавлено в 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
            })
        }
    }
}

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

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

Drag.keys : stringlist

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

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

Drag.mimeData : stringlist

Это свойство содержит карту mimeData, которая используется при startDrag.

Это свойство QML было добавлено в 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.

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

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

dragFinished(DropAction dropAction)

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

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

dragStarted()

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

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

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

void cancel()

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

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

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

Возвращает действие, принятое целевым элементом. Если целевой элемент или родитель не принимают событие 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/qt-5.9/qml-qtquick-drag.html

Spec-Zone.ru

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