Spec-Zone.ru › Qt 5.6

Тип QML Drag

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

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

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

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

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

  • dragFinished(DropAction 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 - внешнее перетаскивание и опускание.

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

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.keys : строковый список

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

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

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

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

Когда перетаскивание неактивно, это свойство содержит объект, принявший событие опускания, завершивший перетаскивание. Если ни один объект не принял событие опускания или перетаскивание было отменено, 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.6/qml-qtquick-drag.html

Spec-Zone.ru

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