Spec-Zone.ru › Qt 5.13

Тип QML Drag

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

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

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

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

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

  • dragFinished(dropAction)
  • dragStarted()

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

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

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

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

Когда перетаскивание активно на элементе, любые изменения его положения приведут к генерации события перетаскивания, которое будет отправлено любому 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

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

Связывание этого свойства с активным свойством 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.

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

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

dragFinished(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/qt-5.13/qml-qtquick-drag.html

Spec-Zone.ru

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