Spec-Zone.ru › Qt

Тип QML Drag

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

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

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

  • active : bool
  • dragType : перечисление
  • hotSpot : QPointF
  • imageSource : QUrl
  • keys : строковый список
  • mimeData : строковый список
  • 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, или завершить его с помощью события drop, вызвав Drag.drop(). Если событие drop принято, Drag.drop() вернёт выбранное целевым объектом действие drop, иначе вернёт Qt.IgnoreAction.

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

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

Drag.active : bool

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

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

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

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

[since 5.2] 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 вызывают новое событие перетаскивания с обновлённым положением.

[since 5.8] Drag.imageSource : QUrl

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

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

import QtQuick 2.12

Item {
    width: 200; height: 200

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

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

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

        DragHandler {
            id: dragHandler
            onActiveChanged:
                if (active) {
                    parent.grabToImage(function(result) {
                        parent.Drag.imageSource = result.url;
                    })
                }
        }
    }
}

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

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

Drag.keys : строковый список

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

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

[since 5.2] Drag.mimeData : строковый список

Это свойство содержит карту 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.

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

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

dragFinished(DropAction dropAction)

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

dropAction содержит действие, принятое целевым элементом.

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

См. также drop().

dragStarted()

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

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

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

void cancel()

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

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

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

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

Возвращаемое действие drop может быть одним из:

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

void start(флаги supportedActions)

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

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

void startDrag(flags supportedActions)

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

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

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

Spec-Zone.ru

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