Drag QML Type (Uncreatable)
이동된 항목에 대한 드래그 앤 드롭 이벤트를 지정하기 위해 사용됩니다. 더 보기...
| Import Statement: | import QtQuick |
참고: 이 타입은 생성할 수 없는 타입입니다. QML에서 인스턴스화할 수 없습니다.
부착 속성
- 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
첨부된 신호
- dragFinished(DropAction dropAction)
- dragStarted()
첨부된 메서드
- void cancel()
- enumeration drop()
- void start(flags supportedActions)
- void startDrag(flags supportedActions)
상세 설명
Drag 부착 속성을 사용하면, 어떤 아이템이든 씬 내에서 드래그 앤 드롭 이벤트의 소스가 될 수 있습니다.
항목에 드래그가 active 되면, 해당 항목의 위치가 변경될 때마다 드래그 이벤트가 발생하며, 이 이벤트는 항목의 새로운 위치와 교차하는 모든 DropArea 로 전송됩니다. 드래그 앤 드롭 이벤트 핸들러를 구현한 다른 항목들도 이러한 이벤트를 수신할 수 있습니다.
다음 코드 조각은 MouseArea 를 사용하여 항목을 드래그하는 방법을 보여줍니다. 그러나 드래그는 마우스 드래그에만 국한되지 않습니다. 터치 이벤트, 애니메이션, 바인딩을 포함하여 항목을 이동시킬 수 있는 모든 요소가 드래그 이벤트를 생성할 수 있습니다.
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
}
}
}드래그는 Drag.cancel()을 사용하여 취소하거나 Drag.active를 false로 설정하여 종료할 수 있으며, Drag.drop()을 호출하여 드롭 이벤트로 종료할 수도 있습니다. 드롭 이벤트가 수락되면 Drag.drop()은 이벤트 수신자가 선택한 drop action 를 반환하고, 그렇지 않으면 Qt.IgnoreAction을 반환합니다.
Qt Quick 예제 - 드래그 앤 드롭도참조하십시오 .
부착 속성 문서
Drag.active : bool [read-only attached]
이 속성은 드래그 이벤트 시퀀스가 현재 활성화되어 있는지 여부를 나타냅니다.
이 속성을 ` MouseArea::drag `의 `active` 속성에 바인딩하면, 사용자가 드래그를 시작할 때 ` startDrag `가 호출됩니다.
이 속성을 true로 설정하면 항목의 현재 위치를 포함한 QDragEnter 이벤트가 씬으로 전송됩니다. false로 설정하면 QDragLeave 이벤트가 전송됩니다.
드래그가 활성화된 동안 아이템의 위치에 변화가 발생하면, 아이템의 새로운 위치를 포함한 QDragMove 이벤트가 씬으로 전송됩니다.
Drag.dragType : enumeration [attached]
이 속성은 드래그를 자동으로 시작할지, 아무 작업도 수행하지 않을지, 아니면 하위 호환이 되는 내부 드래그를 사용할지 여부를 나타냅니다. 기본값은 하위 호환이 되는 내부 드래그를 사용하는 것입니다.
startDrag 를 사용하여 드래그를 수동으로 시작할 수도 있습니다.
| 상수 | 설명 |
|---|---|
Drag.None | 드래그를 자동으로 시작하지 않음 |
Drag.Automatic | 드래그를 자동으로 시작 |
Drag.Internal | (기본값) 하위 호환성 드래그를 자동으로 시작합니다. |
Drag.Automatic 를 사용할 때는 mimeData 도 정의하고, active 속성을 MouseArea 의 active 속성에 바인딩해야 합니다: MouseArea::drag.active
Drag.hotSpot : point [attached]
이 속성은 항목의 왼쪽 상단을 기준으로 한 드래그 위치를 저장합니다.
기본값은 (0, 0)입니다.
hotSpot이 변경되면 업데이트된 위치를 기준으로 새로운 드래그 이동이 시작됩니다.
Drag.imageSource : url [attached]
이 속성은 드래그 앤 드롭 작업 중에 데이터를 나타내는 데 사용될 이미지의 URL을 저장합니다. 드래그 작업이 시작된 후 이 속성을 변경해도 아무런 효과가 없습니다.
아래 예제에서는 항목의 내용을 드래그 이미지로 사용합니다:
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
}
}
}
}Item::grabToImage()도 참조하십시오 .
Drag.imageSourceSize : size [attached, since 6.8]
이 속성은 드래그 앤 드롭 작업 중에 데이터를 나타내는 데 사용될 이미지의 크기를 지정합니다. 드래그 작업이 시작된 후 이 속성을 변경해도 아무런 효과가 없습니다.
이 속성은 로드된 이미지에 대해 저장되는 최대 픽셀 수를 설정하여, 큰 이미지가 필요 이상으로 많은 메모리를 사용하지 않도록 합니다. 자세한 내용은 Image.sourceSize 을 참조하십시오.
아래 예제는 특정 크기로 렌더링된 SVG 이미지를 보여주고, 드래그용 이미지로 다른 크기로 다시 렌더링하는 방법을 보여줍니다:
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
}
}
}이 속성은 Qt 6.8에서 도입되었습니다.
imageSource 및 Item::grabToImage()도 참조하십시오 .
Drag.keys : stringlist [attached]
이 속성은 드래그 이벤트 처리기( DropArea )가 드래그 이벤트를 필터링하는 데 사용할 수 있는 키 목록을 포함합니다.
드래그가 진행 중인 상태에서 키를 변경하면, 드래그 종료 이벤트를 전송한 후 새로운 소스를 가진 드래그 시작 이벤트를 전송함으로써 드래그 이벤트의 순서가 재설정됩니다.
Drag.mimeData : var [attached]
이 속성은 startDrag 과정에서 사용되는 MIME 유형과 데이터 간의 매핑을 포함합니다. MIME 데이터는 해당 MIME 유형과 일치하는 유형이어야 합니다(예: MIME 유형이 "text/plain"인 경우 문자열, MIME 유형이 "image/png"인 경우 이미지) 또는 MIME 유형에 따라 인코딩된 데이터를 포함하는 ` ArrayBuffer `이어야 합니다.
Drag.proposedAction : enumeration [attached]
이 속성은 드래그 소스가 Drag.drop()의 반환 값으로 권장하는 액션을 포함합니다.
proposedAction이 변경되면 업데이트된 제안과 함께 이동 이벤트가 트리거됩니다.
Drag.source : Object [attached]
이 속성은 드래그 이벤트의 수신자에게 해당 이벤트의 소스로 식별되는 객체를 포함합니다. 기본적으로 이는 Drag 속성이 적용된 항목입니다.
드래그가 진행 중인 상태에서 소스를 변경하면, 드래그 이탈 이벤트가 전송된 후 새로운 소스를 가진 드래그 진입 이벤트가 전송되어 드래그 이벤트의 순서가 재설정됩니다.
Drag.supportedActions : flags [attached]
이 속성은 드래그 소스에서 지원하는 Drag.drop()의 반환 값을 보관합니다.
드래그가 진행 중인 상태에서 supportedActions를 변경하면, 드래그 종료 이벤트가 전송된 후 새로운 소스를 가진 드래그 시작 이벤트가 이어서 전송되어 드래그 이벤트의 순서가 재설정됩니다.
Drag.target : Object [attached]
드래그가 활성화된 동안 이 속성은 드래그된 항목으로부터 enter 이벤트를 수신한 마지막 객체를 포함하며, 현재 드래그 위치가 이벤트를 수신하는 대상과 교차하지 않는 경우 null입니다.
드래그가 비활성 상태일 때, 이 속성은 드래그를 종료시킨 드롭 이벤트를 수락한 객체를 저장합니다. 드롭 이벤트를 수락한 객체가 없거나 드래그가 취소된 경우, 대상은 null이 됩니다.
첨부된 시그널 문서
[attached] dragFinished(DropAction dropAction)
이 신호는 드래그가 완료되었을 때 발생하며, 해당 드래그가 ` startDrag()` 메서드를 통해 시작되었거나 ` dragType ` 속성을 사용하여 자동으로 시작된 경우입니다.
dropAction 대상 항목이 수락한 동작을 포함합니다.
참고: 해당 핸들러는 onDragFinished 입니다.
drop()도 참조하십시오 .
[attached] dragStarted()
이 신호는 startDrag() 메서드를 사용하여 드래그가 시작되거나, dragType 속성을 통해 자동으로 드래그가 시작될 때 발생합니다.
참고: 해당 핸들러는 onDragStarted 입니다.
관련 메서드 문서
[attached] void cancel()
드래그 시퀀스를 종료합니다.
[attached] enumeration drop()
대상 항목에 드롭 이벤트를 전송하여 드래그 시퀀스를 종료합니다.
대상 항목이 수락한 동작을 반환합니다. 대상 항목이나 상위 항목이 드롭 이벤트를 수락하지 않는 경우 Qt.IgnoreAction이 반환됩니다.
반환되는 드롭 액션은 다음 중 하나일 수 있습니다:
| 상수 | 설명 |
|---|---|
Qt.CopyAction | 데이터를 대상에 복사합니다. |
Qt.MoveAction | 데이터를 소스에서 대상으로 이동 |
Qt.LinkAction | 소스에서 대상까지 링크를 생성합니다. |
Qt.IgnoreAction | 작업 무시(데이터에 대해 아무 작업도 수행하지 않음). |
[attached] void start(flags supportedActions)
드래그 이벤트 전송을 시작합니다. 구식 내부 드래그를 시작하는 데 사용됩니다. ` startDrag `는 드래그를 시작하는 새로운 방식이자 권장되는 방법입니다.
선택적 인자 supportedActions 를 사용하면 시작된 시퀀스에 대해 supportedActions 속성을 재정의할 수 있습니다.
[attached] void startDrag(flags supportedActions)
드래그 이벤트 전송을 시작합니다.
선택적 인자 supportedActions 를 사용하면 시작된 시퀀스에 대해 supportedActions 속성을 재정의할 수 있습니다.
© 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.