Drag QML Type (Uncreatable)
Zur Festlegung von Drag-and-Drop-Ereignissen für verschobene Elemente. Mehr...
| Import Statement: | import QtQuick |
Hinweis: Dies ist ein nicht erstellbarer Typ. Er kann in QML nicht instanziiert werden.
Angeschlossene 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)
Ausführliche Beschreibung
Mithilfe der angehängten Eigenschaft „Drag“ kann jedes Element innerhalb einer Szene als Quelle für Drag-and-Drop-Ereignisse festgelegt werden.
Wenn ein Drag- active auf einem Element ausgelöst wird, löst jede Änderung der Position dieses Elements ein Drag-Ereignis aus, das an alle „ DropArea “ gesendet wird, die sich mit der neuen Position des Elements überschneiden. Andere Elemente, die Drag-and-Drop-Ereignis-Handler implementieren, können diese Ereignisse ebenfalls empfangen.
Der folgende Codeausschnitt zeigt, wie ein Element mit ` MouseArea` gezogen werden kann. Das Ziehen ist jedoch nicht auf Mausbewegungen beschränkt; alles, was ein Element bewegen kann, kann Drag-Ereignisse auslösen, einschließlich Touch-Ereignissen, 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 Drag-Vorgang kann entweder durch Abbrechen mit `Drag.cancel()` oder durch Setzen von `Drag.active` auf `false` beendet werden, oder er 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 gibt es `Qt.IgnoreAction` zurück.
Siehe auch „Qt Quick -Beispiele – Drag & Drop“.
Dokumentation zu angehängten Eigenschaften
Drag.active : bool [read-only attached]
Diese Eigenschaft gibt an, ob derzeit eine Drag-Ereignissequenz aktiv ist.
Wird diese Eigenschaft an die Eigenschaft „active“ von „ MouseArea::drag “ gebunden, wird „ startDrag “ aufgerufen, sobald der Benutzer mit dem Ziehen beginnt.
Wird diese Eigenschaft auf „true“ gesetzt, wird außerdem ein QDragEnter-Ereignis mit der aktuellen Position des Elements an die Szene gesendet. Wird sie auf „false“ gesetzt, wird ein QDragLeave-Ereignis gesendet.
Solange ein Drag-Vorgang aktiv ist, löst jede Änderung der Position eines Elements ein QDragMove-Ereignis mit der neuen Position des Elements an die Szene aus.
Drag.dragType : enumeration [attached]
Diese Eigenschaft legt fest, ob Drag-Vorgänge automatisch gestartet werden sollen, ob keine Aktion erfolgen soll oder ob abwärtskompatible interne Drag-Vorgänge verwendet werden sollen. Standardmäßig werden abwärtskompatible interne Drag-Vorgänge verwendet.
Ein Drag kann auch manuell mit „ startDrag “ gestartet werden.
| Konstante | Beschreibung |
|---|---|
Drag.None | Ziehvorgänge nicht automatisch starten |
Drag.Automatic | Drag-Vorgänge automatisch starten |
Drag.Internal | (Standard) Abwärtskompatible Drag-Vorgänge automatisch starten |
Bei Verwendung von „ Drag.Automatic “ sollten Sie außerdem „ mimeData “ definieren und die Eigenschaft „ active “ an die Eigenschaft „active“ von „ MouseArea “ binden: MouseArea::drag.active
Drag.hotSpot : point [attached]
Diese Eigenschaft gibt die Position beim Ziehen relativ zur oberen linken Ecke des Elements an.
Standardmäßig ist dies (0, 0).
Änderungen an „hotSpot“ lösen eine neue Drag-Bewegung mit der aktualisierten Position aus.
Drag.imageSource : url [attached]
Diese Eigenschaft enthält die URL des Bildes, das während des Drag-and-Drop-Vorgangs zur Darstellung der Daten verwendet wird. Eine Änderung dieser Eigenschaft nach Beginn des Drag-Vorgangs hat keine Auswirkungen.
Im folgenden Beispiel wird der Inhalt eines Elements als Drag-Bild 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 [attached, since 6.8]
Diese Eigenschaft gibt die Größe des Bildes an, das während des Drag-and-Drop-Vorgangs zur Darstellung der Daten verwendet wird. Eine Änderung dieser Eigenschaft nach Beginn des Drag-Vorgangs hat keine Auswirkungen.
Diese Eigenschaft legt die maximale Anzahl der für das geladene Bild gespeicherten Pixel fest, damit große Bilder nicht mehr Speicherplatz als nötig beanspruchen. Weitere Informationen finden Sie unter Image.sourceSize.
Das folgende Beispiel zeigt ein SVG-Bild, das in einer bestimmten Größe gerendert wurde, und rendert es für das Drag-Bild in einer anderen Größe neu:
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 [attached]
Diese Eigenschaft enthält eine Liste von Schlüsseln, die von einem „ DropArea “ zum Filtern von Drag-Ereignissen verwendet werden können.
Das Ändern der Schlüssel während eines aktiven Ziehvorgangs setzt die Abfolge der Ziehereignisse zurück, indem ein „Drag-Leave“-Ereignis gesendet wird, gefolgt von einem „Drag-Enter“-Ereignis mit der neuen Quelle.
Drag.mimeData : var [attached]
Diese Eigenschaft enthält eine Zuordnung von MIME-Typen zu Daten, die bei der Verarbeitung von „ startDrag “ verwendet wird. Die MIME-Daten müssen einen Typ haben, der dem MIME-Typ entspricht (z. B. eine Zeichenkette, wenn der MIME-Typ „text/plain“ lautet, oder ein Bild, wenn der MIME-Typ „image/png“ lautet), oder ein „ ArrayBuffer “, bei dem die Daten entsprechend dem MIME-Typ kodiert sind.
Drag.proposedAction : enumeration [attached]
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 „Move“-Ereignis mit dem aktualisierten Vorschlag aus.
Drag.source : Object [attached]
Diese Eigenschaft enthält ein Objekt, das den Empfängern von Drag-Ereignissen als Quelle der Ereignisse identifiziert wird. Standardmäßig ist dies das Element, an das die Eigenschaft „Drag“ angehängt ist.
Wird die Quelle während eines aktiven Drag-Vorgangs geändert, wird die Abfolge der Drag-Ereignisse zurückgesetzt, indem zunächst ein „Drag-Leave“-Ereignis und anschließend ein „Drag-Enter“-Ereignis mit der neuen Quelle gesendet wird.
Drag.supportedActions : flags [attached]
Diese Eigenschaft enthält die Rückgabewerte von `Drag.drop()`, die von der Drag-Quelle unterstützt werden.
Wird „supportedActions“ geändert, während ein Drag aktiv ist, wird die Abfolge der Drag-Ereignisse zurückgesetzt, indem ein „Drag-Leave“-Ereignis gesendet wird, gefolgt von einem „Drag-Enter“-Ereignis mit der neuen Quelle.
Drag.target : Object [attached]
Solange ein Drag-Vorgang aktiv ist, enthält diese Eigenschaft das letzte Objekt, das ein „Enter“-Ereignis vom gezogenen Element akzeptiert hat; wenn die aktuelle Drag-Position kein akzeptierendes Ziel schneidet, ist der Wert null.
Wenn kein Drag aktiv ist, enthält diese Eigenschaft das Objekt, das das Drop-Ereignis akzeptiert hat, durch das der Drag beendet wurde. Hat kein Objekt das Drop-Ereignis akzeptiert oder wurde der Drag abgebrochen, ist das Ziel null.
Dokumentation zu den zugehörigen Signalen
[attached] dragFinished(DropAction dropAction)
Dieses Signal wird ausgelöst, wenn ein Drag-Vorgang beendet wird, der mit der Methode ` startDrag()` gestartet oder automatisch über die Eigenschaft ` dragType ` initiiert wurde.
dropAction Enthält die vom Zielelement akzeptierte Aktion.
Hinweis: Der entsprechende Handler ist ` onDragFinished`.
Siehe auch drop().
[attached] dragStarted()
Dieses Signal wird ausgelöst, wenn ein Drag mit der Methode ` startDrag()` gestartet wird oder wenn er automatisch über die Eigenschaft ` dragType ` gestartet wird.
Hinweis: Der entsprechende Handler ist onDragStarted.
Dokumentation zur zugehörigen Methode
[attached] void cancel()
Beendet eine Ziehsequenz.
[attached] enumeration drop()
Beendet eine Drag-Sequenz, indem ein Drop-Ereignis an das Zielelement gesendet wird.
Gibt die vom Zielobjekt akzeptierte Aktion zurück. Wenn das Zielobjekt oder ein übergeordnetes Objekt das Drop-Ereignis nicht akzeptiert, wird „Qt.IgnoreAction“ zurückgegeben.
Die zurückgegebene Drop-Aktion kann eine der folgenden sein:
| Konstante | Beschreibung |
|---|---|
Qt.CopyAction | Kopiere die Daten in das Ziel |
Qt.MoveAction | Verschiebt die Daten von der Quelle zum Ziel |
Qt.LinkAction | Erstellen Sie einen Link von der Quelle zum Ziel. |
Qt.IgnoreAction | Die Aktion ignorieren (keine Aktion mit den Daten durchführen). |
[attached] void start(flags supportedActions)
Beginnt mit dem Senden von Drag-Ereignissen. Wird zum Starten von internen Drag-Vorgängen im alten Stil verwendet. „ startDrag “ ist die bevorzugte Methode zum Starten von Drag-Vorgängen im neuen Stil.
Das optionale Argument „ supportedActions “ kann verwendet werden, um die Eigenschaft „ supportedActions “ für die gestartete Sequenz zu überschreiben.
[attached] void startDrag(flags supportedActions)
Beginnt mit dem Senden von Drag-Ereignissen.
Das optionale Argument „ supportedActions “ kann verwendet werden, um die Eigenschaft „ supportedActions “ für die gestartete Sequenz zu überschreiben.
© 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.