Drag QML Type
Para especificar eventos de arrastrar y soltar para Elementos movidos. Más...
| Import Statement: | import QtQuick |
Propiedades adjuntas
- active : bool
- dragType : enumeration
- hotSpot : point
- imageSource : url
- imageSourceSize : size
(since 6.8) - keys : stringlist
- mimeData : var
- proposedAction : enumeration
- source : Object
- supportedActions : flags
- target : Object
Señales adjuntas
- dragFinished(DropAction dropAction)
- dragStarted()
Métodos adjuntos
- void cancel()
- enumeration drop()
- void start(flags supportedActions)
- void startDrag(flags supportedActions)
Descripción detallada
Utilizando la propiedad Drag attached, cualquier Item puede convertirse en una fuente de eventos drag and drop dentro de una escena.
Cuando un arrastre es active en un ítem, cualquier cambio en la posición de ese ítem generará un evento de arrastre que será enviado a cualquier DropArea que se cruce con la nueva posición del ítem. Otros elementos que implementen manejadores de eventos de arrastrar y soltar también pueden recibir estos eventos.
El siguiente fragmento muestra cómo se puede arrastrar un elemento con MouseArea. Sin embargo, el arrastre no se limita al ratón; cualquier cosa que pueda mover un elemento puede generar eventos de arrastre, incluyendo eventos táctiles, animaciones y vinculaciones.
import QtQuick 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 } } }
Un arrastre puede terminarse cancelándolo con Drag.cancel() o estableciendo Drag.active en false, o puede terminarse con un evento drop llamando a Drag.drop(). Si el evento drop es aceptado, Drag.drop() devolverá el drop action elegido por el destinatario del evento, de lo contrario devolverá Qt.IgnoreAction.
Vea también Qt Quick Ejemplos - Arrastrar y Soltar.
Documentación de la propiedad Attached
Drag.active : bool [read-only]
Esta propiedad mantiene si una secuencia de eventos de arrastre está actualmente activa.
Vinculando esta propiedad a la propiedad active de MouseArea::drag hará que startDrag sea llamado cuando el usuario comience a arrastrar.
Establecer esta propiedad a true también enviará un evento QDragEnter a la escena con la posición actual del ítem. Establecerla a false enviará un evento QDragLeave.
Mientras un arrastre está activo cualquier cambio en la posición de un ítem enviará un evento QDragMove con la nueva posición del ítem a la escena.
Drag.dragType : enumeration
Esta propiedad indica si se deben iniciar automáticamente los arrastres, no hacer nada, o utilizar arrastres internos compatibles con versiones anteriores. El valor predeterminado es utilizar arrastres internos compatibles con versiones anteriores.
Un arrastre también puede iniciarse manualmente usando startDrag.
| Constante | Descripción |
|---|---|
Drag.None | no iniciar los arrastres automáticamente |
Drag.Automatic | iniciar los arrastres automáticamente |
Drag.Internal | (por defecto) iniciar automáticamente los arrastres compatibles con versiones anteriores |
Cuando utilice Drag.Automatic también debe definir mimeData y vincular la propiedad active a la propiedad active de MouseArea: MouseArea::drag.active
Drag.hotSpot : point
Esta propiedad contiene la posición de arrastre relativa a la parte superior izquierda del elemento.
Por defecto es (0, 0).
Los cambios en el hotSpot desencadenan un nuevo movimiento de arrastre con la posición actualizada.
Drag.imageSource : url
Esta propiedad contiene la URL de la imagen que se utilizará para representar los datos durante la operación de arrastrar y soltar. Cambiar esta propiedad después de que la operación de arrastre haya comenzado no tendrá ningún efecto.
El ejemplo siguiente utiliza el contenido de un elemento como imagen de arrastre:
import QtQuick Item { width: 200; height: 200 Rectangle { anchors.centerIn: parent width: text.implicitWidth + 20; height: text.implicitHeight + 10 color: "green" radius: 5 Drag.dragType: Drag.Automatic Drag.supportedActions: Qt.CopyAction Drag.mimeData: { "text/plain": "Copied text" } Text { id: text anchors.centerIn: parent text: "Drag me" } DragHandler { id: dragHandler onActiveChanged: if (active) { parent.grabToImage(function(result) { parent.Drag.imageSource = result.url parent.Drag.active = true }) } else { parent.Drag.active = false } } } }
Véase también Item::grabToImage().
Drag.imageSourceSize : size [since 6.8]
Esta propiedad contiene el tamaño de la imagen que se utilizará para representar los datos durante la operación de arrastrar y soltar. Cambiar esta propiedad después de que la operación de arrastrar y soltar haya comenzado no tendrá ningún efecto.
Esta propiedad establece el número máximo de píxeles almacenados para la imagen cargada, de forma que las imágenes grandes no utilicen más memoria de la necesaria. Consulte Image.sourceSize para obtener más detalles.
El siguiente ejemplo muestra una imagen SVG renderizada a un tamaño, y la vuelve a renderizar a un tamaño diferente para la imagen de arrastre:
import QtQuick Item { width: 200; height: 200 Image { anchors.centerIn: parent source: "images/qt_logo.svg" sourceSize.width: 96 Drag.dragType: Drag.Automatic Drag.supportedActions: Qt.CopyAction Drag.mimeData: { "text/plain": "Qt Quick rocks!" } Drag.imageSource: "images/qt_logo.svg" Drag.imageSourceSize: Qt.size(48, 35) Drag.active: dragHandler.active DragHandler { id: dragHandler } } }
Esta propiedad se introdujo en Qt 6.8.
Véase también imageSource y Item::grabToImage().
Drag.keys : stringlist
Esta propiedad contiene una lista de teclas que pueden ser usadas por DropArea para filtrar eventos de arrastre.
Cambiar las teclas mientras un arrastre está activo reiniciará la secuencia de eventos de arrastre enviando un evento de salida de arrastre seguido de un evento de entrada de arrastre con la nueva fuente.
Drag.mimeData : var
Esta propiedad contiene un mapa del tipo mime a los datos que se utilizan durante startDrag. Los datos mime tienen que ser de un tipo que coincida con el tipo mime (por ejemplo, una cadena si el tipo mime es "text/plain", o una imagen si el tipo mime es "image/png"), o un ArrayBuffer con los datos codificados según el tipo mime.
Drag.proposedAction : enumeration
Esta propiedad contiene una acción recomendada por la fuente de arrastre como valor de retorno de Drag.drop().
Los cambios en proposedAction desencadenarán un evento move con la propuesta actualizada.
Drag.source : Object
Esta propiedad contiene un objeto que se identifica a los receptores de eventos de arrastre como la fuente de los eventos. Por defecto, este es el ítem al que se adjunta la propiedad Drag.
Cambiar el origen mientras un arrastre está activo reiniciará la secuencia de eventos de arrastre enviando un evento de salida de arrastre seguido de un evento de entrada de arrastre con el nuevo origen.
Drag.supportedActions : flags
Esta propiedad contiene los valores de Drag.drop() soportados por la fuente de arrastre.
Cambiar las supportedActions mientras un arrastre está activo reiniciará la secuencia de eventos de arrastre enviando un evento drag leave seguido de un evento drag enter con la nueva fuente.
Drag.target : Object
Mientras un arrastre está activo esta propiedad contiene el último objeto que aceptó un evento de entrada del ítem arrastrado, si la posición actual de arrastre no interseca ningún objetivo aceptante será null.
Cuando un arrastre no está activo esta propiedad contiene el objeto que aceptó el evento drop que finalizó el arrastre, si ningún objeto aceptó el drop o el arrastre fue cancelado el objetivo será nulo.
Documentación de la señal adjunta
dragFinished(DropAction dropAction)
Esta señal se emite cuando un arrastre finaliza y el arrastre se inició con el método startDrag() o se inició automáticamente utilizando la propiedad dragType.
dropAction contiene la acción aceptada por el elemento de destino.
Nota: El manejador correspondiente es onDragFinished.
Véase también drop().
dragStarted()
Esta señal se emite cuando se inicia un arrastre con el método startDrag() o cuando se inicia automáticamente utilizando la propiedad dragType.
Nota: El manejador correspondiente es onDragStarted.
Documentación del método Attached
void cancel()
Finaliza una secuencia de arrastre.
enumeration drop()
Finaliza una secuencia de arrastre enviando un evento de soltar al elemento de destino.
Devuelve la acción aceptada por el elemento de destino. Si el elemento de destino o uno de sus padres no acepta el evento de soltar, entonces se devolverá Qt.IgnoreAction.
La acción de soltar devuelta puede ser una de las siguientes
| Constante | Descripción |
|---|---|
Qt.CopyAction | Copiar los datos al destino |
Qt.MoveAction | Mover los datos del origen al destino |
Qt.LinkAction | Crear un enlace desde el origen al destino. |
Qt.IgnoreAction | Ignorar la acción (no hacer nada con los datos). |
void start(flags supportedActions)
Inicia el envío de eventos de arrastre. Se utiliza para iniciar arrastres internos del estilo antiguo. startDrag es el nuevo estilo, el método preferido para iniciar arrastres.
El argumento opcional supportedActions se puede utilizar para anular la propiedad supportedActions para la secuencia iniciada.
void startDrag(flags supportedActions)
Inicia el envío de eventos de arrastre.
El argumento opcional supportedActions se puede utilizar para anular la propiedad supportedActions para la secuencia iniciada.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.