Тип QML Drag
Для указания событий перетаскивания и опускания перемещаемых элементов. Подробнее...
| Оператор импорта: | import QtQuick 2.0 |
Присоединенные свойства
- active : bool
- dragType : перечисление
- hotSpot : QPointF
- imageSource : QUrl
- keys : список строк
- mimeData : список строк
- proposedAction : перечисление
- source : Объект
- supportedActions : флаги
- target : Объект
Присоединенные сигналы
- dragFinished(DropAction dropAction)
- dragStarted()
Присоединенные методы
- void cancel()
- перечисление drop()
- void start(флаги supportedActions)
- void startDrag(флаги 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 - 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 : stringlist
Это свойство хранит список ключей, которые могут быть использованы DropArea для фильтрации событий перетаскивания.
Изменение ключей во время активного перетаскивания обнуляет последовательность событий перетаскивания, отправив событие drag leave, за которым следует событие drag enter с новым источником.
[since 5.2] 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.
Когда перетаскивание не активно, это свойство хранит объект, который принял событие drop, завершив перетаскивание. Если ни один объект не принял drop или перетаскивание было отменено, 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 для начатой последовательности.
END_OF_DOCUMENT_MARKERvoid 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.0/qml-qtquick-drag.html