Drag QML Type

이동한 항목에 대한 끌어서 놓기 이벤트를 지정합니다. 더 보기...

Import Statement: import QtQuick

첨부된 속성

첨부된 신호

첨부 메서드

자세한 설명

드래그 첨부 속성을 사용하면 모든 항목을 장면 내에서 드래그 앤 드롭 이벤트의 소스로 만들 수 있습니다.

항목을 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]

이 프로퍼티는 드래그 이벤트 시퀀스가 현재 활성화되어 있는지 여부를 저장합니다.

이 속성을 활성 속성인 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 [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에 도입되었습니다.

imageSourceItem::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)

이 신호는 드래그가 완료되고 드래그가 startDrag() 메서드로 시작되었거나 dragType 속성을 사용하여 자동으로 시작되었을 때 발생합니다.

dropAction 는 대상 항목이 수락한 액션을 보유합니다.

참고: 해당 핸들러는 onDragFinished 입니다.

drop()도 참조하세요 .


dragStarted()

이 신호는 드래그가 startDrag() 메서드로 시작되거나 dragType 속성을 사용하여 자동으로 시작될 때 발생합니다.

참고: 해당 핸들러는 onDragStarted 입니다.


첨부된 메서드 문서

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.