Тип QML Drag
Для указания событий перетаскивания и перемещения элементов. Подробнее...
| Заявление об импорте: | import QtQuick 2.12 |
Присоединенные свойства
- 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, любой элемент может стать источником событий перетаскивания и перемещения в сцене.
Когда перетаскивание активно на элементе, любое изменение положения этого элемента сгенерирует событие перетаскивания, которое будет отправлено любому 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 со свойством активного 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 : строковый список
Это свойство хранит список ключей, которые может использовать DropArea для фильтрации событий перетаскивания.
Изменение ключей во время активного перетаскивания сбросит последовательность событий перетаскивания, отправив событие drag leave, за которым следует событие drag enter с новым источником.
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.
Соответствующий обработчик — 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.12/qml-qtquick-drag.html