Drag QML Type
Zur Angabe von Drag&Drop-Ereignissen für verschobene Elemente. Mehr...
Import Statement: | import QtQuick |
Angehängte Eigenschaften
- 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
Angehängte Signale
- dragFinished(DropAction dropAction)
- dragStarted()
Beigefügte Methoden
- void cancel()
- enumeration drop()
- void start(flags supportedActions)
- void startDrag(flags supportedActions)
Detaillierte Beschreibung
Mit der Eigenschaft "Drag attached" kann jedes Element zu einer Quelle für Drag- und Drop-Ereignisse innerhalb einer Szene gemacht werden.
Wenn ein Element auf active gezogen wird, erzeugt jede Änderung der Position dieses Elements ein Drag-Ereignis, das an jede DropArea gesendet wird, die sich mit der neuen Position des Elements schneidet. Andere Elemente, die Drag & Drop-Ereignishandler implementieren, können diese Ereignisse ebenfalls empfangen.
Der folgende Ausschnitt zeigt, wie ein Element mit MouseArea gezogen werden kann. Das Ziehen ist jedoch nicht auf das Ziehen mit der Maus beschränkt; alles, was ein Element bewegen kann, kann Ziehereignisse erzeugen, einschließlich Berührungsereignisse, Animationen und Bindungen.
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 } } }
Ein Ziehen kann entweder durch Abbrechen mit Drag.cancel() oder durch Setzen von Drag.active auf false beendet werden, oder es kann mit einem Drop-Ereignis durch Aufruf von Drag.drop() beendet werden. Wenn das Drop-Ereignis akzeptiert wird, gibt Drag.drop() die vom Empfänger des Ereignisses gewählte drop action zurück, andernfalls wird Qt.IgnoreAction zurückgegeben.
Siehe auch Qt Quick Beispiele - Drag and Drop.
Dokumentation der Eigenschaft Attached
Drag.active : bool |
Diese Eigenschaft gibt an, ob eine Drag-Ereignissequenz gerade aktiv ist.
Die Bindung dieser Eigenschaft an die aktive Eigenschaft von MouseArea::drag bewirkt, dass startDrag aufgerufen wird, wenn der Benutzer mit dem Ziehen beginnt.
Wird diese Eigenschaft auf true gesetzt, wird auch ein QDragEnter-Ereignis mit der aktuellen Position des Elements an die Szene gesendet. Wird sie auf false gesetzt, wird ein QDragLeave-Ereignis gesendet.
Während des Ziehens wird bei jeder Änderung der Position des Objekts ein QDragMove-Ereignis mit der neuen Position des Objekts an die Szene gesendet.
Drag.dragType : enumeration |
Diese Eigenschaft gibt an, ob Ziehvorgänge automatisch gestartet werden sollen, ob nichts getan werden soll oder ob abwärtskompatible interne Ziehvorgänge verwendet werden sollen. Die Voreinstellung ist, abwärtskompatible interne Drags zu verwenden.
Ein Drag kann auch manuell mit startDrag gestartet werden.
Konstante | Beschreibung |
---|---|
Drag.None | Drags nicht automatisch starten |
Drag.Automatic | Drags automatisch starten |
Drag.Internal | (Standard) Abwärtskompatible Drags automatisch starten |
Wenn Sie Drag.Automatic
verwenden, sollten Sie auch mimeData definieren und die Eigenschaft active an die aktive Eigenschaft von MouseArea binden: MouseArea::drag.active
Drag.hotSpot : point |
Diese Eigenschaft enthält die Ziehposition relativ zur linken oberen Ecke des Elements.
Standardmäßig ist dies (0, 0).
Änderungen am HotSpot lösen eine neue Ziehbewegung mit der aktualisierten Position aus.
Drag.imageSource : url |
Diese Eigenschaft enthält die URL des Bildes, das zur Darstellung der Daten beim Ziehen und Ablegen verwendet wird. Eine Änderung dieser Eigenschaft nach Beginn des Ziehvorgangs hat keine Auswirkung.
Im folgenden Beispiel wird der Inhalt eines Elements als Ziehbild verwendet:
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 } } } }
Siehe auch Item::grabToImage().
Drag.imageSourceSize : size |
Diese Eigenschaft gibt die Größe des Bildes an, das zur Darstellung der Daten während des Ziehen-und-Ablegen-Vorgangs verwendet wird. Das Ändern dieser Eigenschaft nach dem Start des Ziehvorgangs hat keine Auswirkungen mehr.
Diese Eigenschaft legt die maximale Anzahl von Pixeln fest, die für das geladene Bild gespeichert werden, damit große Bilder nicht mehr Speicher als nötig benötigen. Siehe Image.sourceSize für weitere Details.
Das folgende Beispiel zeigt ein SVG-Bild, das in einer bestimmten Größe gerendert wurde und für das Ziehen des Bildes in einer anderen Größe neu gerendert wird:
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 } } }
Diese Eigenschaft wurde in Qt 6.8 eingeführt.
Siehe auch imageSource und Item::grabToImage().
Drag.keys : stringlist |
Diese Eigenschaft enthält eine Liste von Schlüsseln, die von DropArea verwendet werden können, um Drag-Ereignisse zu filtern.
Das Ändern der Schlüssel während des Ziehens setzt die Reihenfolge der Zieh-Ereignisse zurück, indem ein Zieh-Verlassen-Ereignis gefolgt von einem Zieh-Eingabe-Ereignis mit der neuen Quelle gesendet wird.
Drag.mimeData : var |
Diese Eigenschaft enthält eine Zuordnung von Mime-Typ zu Daten, die während startDrag verwendet werden. Die Mime-Daten müssen von einem Typ sein, der mit dem Mime-Typ übereinstimmt (z. B. eine Zeichenkette, wenn der Mime-Typ "text/plain" ist, oder ein Bild, wenn der Mime-Typ "image/png" ist), oder eine ArrayBuffer
mit den Daten, die entsprechend dem Mime-Typ kodiert sind.
Drag.proposedAction : enumeration |
Diese Eigenschaft enthält eine Aktion, die von der Drag-Quelle als Rückgabewert von Drag.drop() empfohlen wird.
Änderungen an proposedAction lösen ein Verschiebungsereignis mit dem aktualisierten Vorschlag aus.
Drag.source : Object |
Diese Eigenschaft enthält ein Objekt, das den Empfängern von Drag-Ereignissen als die Quelle der Ereignisse angezeigt wird. Standardmäßig ist dies das Element, dem die Eigenschaft Drag zugeordnet ist.
Wenn Sie die Quelle ändern, während ein Ziehen aktiv ist, wird die Abfolge der Ziehereignisse zurückgesetzt, indem ein Ziehverlassen-Ereignis gefolgt von einem Zieheingabe-Ereignis mit der neuen Quelle gesendet wird.
Drag.supportedActions : flags |
Diese Eigenschaft enthält Rückgabewerte von Drag.drop(), die von der Drag-Quelle unterstützt werden.
Wenn die unterstützten Aktionen bei aktivem Ziehen geändert werden, wird die Abfolge der Ziehereignisse zurückgesetzt, indem ein Ziehverlassen-Ereignis gefolgt von einem Ziehbetreten-Ereignis mit der neuen Quelle gesendet wird.
Drag.target : Object |
Wenn das Ziehen aktiv ist, enthält diese Eigenschaft das letzte Objekt, das ein Enter-Ereignis vom gezogenen Element akzeptiert hat; wenn die aktuelle Ziehposition kein akzeptierendes Ziel überschneidet, ist sie null.
Wenn das Ziehen nicht aktiv ist, enthält diese Eigenschaft das Objekt, das das Drop-Ereignis akzeptiert hat, das das Ziehen beendete. Wenn kein Objekt das Drop-Ereignis akzeptiert hat oder das Ziehen abgebrochen wurde, ist das Ziel dann null.
Dokumentation des angehängten Signals
dragFinished(DropAction dropAction) |
Dieses Signal wird ausgegeben, wenn ein Ziehen beendet wird und das Ziehen mit der Methode startDrag() oder automatisch mit der Eigenschaft dragType gestartet wurde.
dropAction Das Signal enthält die vom Zielelement akzeptierte Aktion.
Hinweis: Der entsprechende Handler ist onDragFinished
.
Siehe auch drop().
dragStarted() |
Dokumentation der angehängten Methode
void cancel() |
Beendet eine Drag-Sequenz.
enumeration drop() |
Beendet eine Ziehungssequenz durch Senden eines Drop-Ereignisses an das Zielelement.
Gibt die vom Zielelement akzeptierte Aktion zurück. Wenn das Zielelement oder ein übergeordnetes Element das Drop-Ereignis nicht akzeptiert, wird Qt.IgnoreAction zurückgegeben.
Die zurückgegebene Drop-Aktion kann eine der folgenden sein:
Konstante | Beschreibung |
---|---|
Qt.CopyAction | Kopieren der Daten in das Ziel |
Qt.MoveAction | Verschieben der Daten von der Quelle zum Ziel |
Qt.LinkAction | Erstellen einer Verknüpfung von der Quelle zum Ziel. |
Qt.IgnoreAction | Ignoriert die Aktion (macht nichts mit den Daten). |
void start(flags supportedActions) |
Startet das Senden von Drag-Ereignissen. Wird zum Starten von internen Ziehvorgängen im alten Stil verwendet. startDrag ist die neue, bevorzugte Methode zum Starten von Ziehvorgängen.
Das optionale Argument supportedActions kann verwendet werden, um die Eigenschaft supportedActions für die gestartete Sequenz außer Kraft zu setzen.
void startDrag(flags supportedActions) |
Beginnt mit dem Senden von Ziehereignissen.
Das optionale Argument supportedActions kann verwendet werden, um die Eigenschaft supportedActions für die gestartete Sequenz zu überschreiben.
© 2025 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.