Тип QML Drag
Для указания событий перетаскивания и перемещения элементов. Подробнее...
| Заявление об импорте: | import QtQuick 2.1 |
Прикрепленные свойства
- 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, либо завершив его событием drop, вызвав Drag.drop(). Если событие drop принято, Drag.drop() вернет выбранное получателем события действие drop action, в противном случае вернет Qt.IgnoreAction.
См. также Qt Quick Examples - Перетаскивание и перемещение и Qt Quick Examples - externaldraganddrop.
Документация по прикрепленным свойствам
Drag.active : bool
Это свойство указывает, активно ли в данный момент последовательность событий перетаскивания.
Привязывание этого свойства к свойству active MouseArea::drag заставит вызвать startDrag, когда пользователь начнет перетаскивание.
Установка этого свойства в true также отправит событие QDragEnter в сцену с текущей позицией элемента. Установка в false отправит событие QDragLeave.
Пока перетаскивание активно, любое изменение позиции элемента отправит событие QDragMove со новой позицией элемента в сцену.
[since 5.2] 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 вызывают новое перетаскивание с обновленной позицией.
[since 5.8] 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 с новым источником.
[since 5.2] 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.
dropAction содержит действие, принятое целевым элементом.
Примечание: Соответствующий обработчик onDragFinished.
См. также drop().
dragStarted()
Этот сигнал излучается, когда перетаскивание начинается с помощью метода startDrag() или когда оно начинается автоматически с помощью свойства dragType.
Примечание: Соответствующий обработчик onDragStarted.
Документация по прикрепленным методам
void cancel()
Завершает последовательность перетаскивания.
перечисление drop()
Завершает последовательность перетаскивания, отправив событие drop целевому элементу.
Возвращает действие, принятое целевым элементом. Если целевой элемент или родительский элемент не принимают событие drop, то будет возвращено Qt.IgnoreAction.
Возвращаемое действие drop может быть одним из следующих:
- 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-6.1/qml-qtquick-drag.html