Тип QML Drag
Для указания событий перетаскивания и перемещения элементов. Подробнее...
| Заявление об импорте: | import QtQuick 2.13 |
Присоединенные свойства
- active : bool
- dragType : перечисление
- hotSpot : QPointF
- imageSource : QUrl
- keys : stringlist
- mimeData : stringlist
- proposedAction : перечисление
- source : Объект
- supportedActions : флаги
- target : Объект
Присоединенные сигналы
- dragFinished(dropAction)
- dragStarted()
Присоединенные методы
Подробное описание
Используя присоединенное свойство 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