Тип QML Drag
Для задания событий перетаскивания и сбрасывания перемещаемых элементов. Подробнее...
| Заявление об импорте: | import QtQuick 2.15 |
Присоединенные свойства
- active : bool
- dragType : перечисление
- hotSpot : QPointF
- imageSource : QUrl
- keys : stringlist
- mimeData : stringlist
- 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, либо путем завершения с помощью события сбрасывания, вызвав 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
Это свойство было введено в 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.
Когда перетаскивание не активно, это свойство содержит объект, который принял событие сброса, завершив перетаскивание. Если ни один объект не принял событие сброса или перетаскивание было отменено, target будет равно null.
Документация по присоединенному сигналу
dragFinished(DropAction dropAction)
Этот сигнал испускается при завершении перетаскивания, и перетаскивание было начато методом startDrag() или запущено автоматически с помощью свойства dragType.
dropAction содержит действие, принятое целевым элементом.
Примечание: Соответствующий обработчик - onDragFinished.
См. также drop().
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(flags supportedActions)
Начинает отправку событий перетаскивания.
Дополнительный аргумент supportedActions может использоваться для переопределения свойства supportedActions для начатой последовательности.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtquick-drag.html