Drag QML Type
이동한 항목에 대한 끌어서 놓기 이벤트를 지정합니다. 더 보기...
Import Statement: | import QtQuick |
첨부된 속성
- 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)
자세한 설명
드래그 첨부 속성을 사용하면 모든 항목을 장면 내에서 드래그 앤 드롭 이벤트의 소스로 만들 수 있습니다.
항목을 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 |
이 프로퍼티는 드래그 이벤트 시퀀스가 현재 활성화되어 있는지 여부를 저장합니다.
이 속성을 활성 속성인 MouseArea::drag 에 바인딩하면 사용자가 드래그를 시작할 때 startDrag 이 호출됩니다.
이 속성을 true로 설정하면 항목의 현재 위치가 있는 씬에 QDragEnter 이벤트도 전송됩니다. false로 설정하면 QDragLeave 이벤트가 전송됩니다.
드래그가 활성화되어 있는 동안 항목의 위치가 변경되면 항목의 새 위치가 포함된 QDragMove 이벤트가 장면에 전송됩니다.
Drag.dragType : enumeration |
이 속성은 드래그를 자동으로 시작할지, 아무것도 하지 않을지, 이전 버전과 호환되는 내부 드래그를 사용할지 여부를 나타냅니다. 기본값은 이전 버전과 호환되는 내부 드래그를 사용하는 것입니다.
드래그는 startDrag 을 사용하여 수동으로 시작할 수도 있습니다.
Constant | 설명 |
---|---|
Drag.None | 드래그를 자동으로 시작하지 않음 |
Drag.Automatic | 드래그를 자동으로 시작 |
Drag.Internal | (기본값) 이전 버전과 호환되는 드래그를 자동으로 시작합니다. |
Drag.Automatic
을 사용하는 경우 mimeData 을 정의하고 active 속성을 MouseArea 의 활성 속성에 바인딩해야 합니다: MouseArea::drag.active
Drag.hotSpot : point |
이 속성은 항목의 왼쪽 상단을 기준으로 드래그 위치를 유지합니다.
기본적으로 이 값은 (0, 0)입니다.
핫스팟을 변경하면 업데이트된 위치로 새 드래그 이동이 트리거됩니다.
Drag.imageSource : url |
이 속성에는 끌어서 놓기 작업 중에 데이터를 나타내는 데 사용되는 이미지의 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 |
이 속성은 끌어서 놓기 작업 중에 데이터를 나타내는 데 사용되는 이미지의 크기를 보유합니다. 드래그 작업이 시작된 후 이 속성을 변경하면 효과가 없습니다.
이 속성은 로드된 이미지에 대해 저장되는 최대 픽셀 수를 설정하여 큰 이미지가 필요 이상으로 많은 메모리를 사용하지 않도록 합니다. 자세한 내용은 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 |
이 프로퍼티에는 DropArea 에서 드래그 이벤트를 필터링하는 데 사용할 수 있는 키 목록이 들어 있습니다.
드래그가 활성화된 상태에서 키를 변경하면 드래그 나가기 이벤트에 이어 새 소스로 드래그 입력 이벤트를 전송하여 드래그 이벤트 순서를 재설정합니다.
Drag.mimeData : var |
이 속성은 startDrag 에서 사용되는 데이터에 대한 마임 유형 맵을 보유합니다. 마임 데이터는 마임 유형과 일치하는 유형(예: 마임 유형이 "텍스트/일반"인 경우 문자열, "이미지/png"인 경우 이미지)이거나 마임 유형에 따라 인코딩된 데이터가 포함된 ArrayBuffer
여야 합니다.
Drag.proposedAction : enumeration |
이 속성은 드래그 소스에서 드래그의 반환 값으로 권장하는 동작을 보유합니다.drop().
제안된 액션을 변경하면 업데이트된 제안으로 이동 이벤트가 트리거됩니다.
Drag.source : Object |
이 속성은 드래그 이벤트의 수신자에게 이벤트의 소스로 식별되는 객체를 보유합니다. 기본적으로 이 객체는 드래그 속성이 연결된 항목입니다.
드래그가 활성화된 상태에서 소스를 변경하면 새 소스로 드래그 나가기 이벤트와 드래그 입력 이벤트를 전송하여 드래그 이벤트 순서를 재설정합니다.
Drag.supportedActions : flags |
이 속성은 드래그 소스에서 지원하는 Drag.drop()의 반환 값을 보유합니다.
드래그가 활성화된 상태에서 supportedActions를 변경하면 새 소스로 드래그 나가기 이벤트와 드래그 입력 이벤트를 전송하여 드래그 이벤트 순서를 재설정합니다.
Drag.target : Object |
드래그가 활성화되어 있는 동안 이 속성은 드래그한 항목에서 입력 이벤트를 수락할 마지막 개체를 보유하며, 현재 드래그 위치가 수락 대상과 교차하지 않는 경우 이 속성은 null이 됩니다.
드래그가 활성화되지 않은 경우 이 속성은 드래그를 종료한 드롭 이벤트를 수락한 객체를 보유하며, 드롭을 수락한 객체가 없거나 드래그가 취소된 경우 대상은 null이 됩니다.
첨부된 신호 문서
dragFinished(DropAction dropAction) |
dragStarted() |
첨부된 메서드 문서
void cancel() |
드래그 시퀀스를 종료합니다.
enumeration drop() |
대상 항목에 드래그 이벤트를 전송하여 드래그 시퀀스를 종료합니다.
대상 항목이 수락한 동작을 반환합니다. 대상 항목이나 부모가 드래그 이벤트를 수락하지 않으면 Qt.IgnoreAction이 반환됩니다.
반환된 드롭 액션은 다음 중 하나일 수 있습니다:
상수 | 설명 |
---|---|
Qt.CopyAction | 대상에 데이터 복사 |
Qt.MoveAction | 소스에서 대상으로 데이터 이동 |
Qt.LinkAction | 소스에서 대상에 대한 링크를 만듭니다. |
Qt.IgnoreAction | 작업을 무시합니다(데이터로 아무 작업도 수행하지 않음). |
void start(flags supportedActions) |
끌기 이벤트 전송을 시작합니다. 이전 스타일의 내부 끌기를 시작하는 데 사용됩니다. startDrag 은 새로운 스타일의 선호되는 끌기 시작 방법입니다.
선택적 supportedActions 인수를 사용하여 시작된 시퀀스에 대한 supportedActions 속성을 재정의할 수 있습니다.
void startDrag(flags supportedActions) |
드래그 이벤트 전송을 시작합니다.
선택적 supportedActions 인수는 시작된 시퀀스에 대한 supportedActions 속성을 재정의하는 데 사용할 수 있습니다.
© 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.