2016-08-30 2 views
1

아래 그림과 같이 슬라이더와 슬라이더 위로 움직이는 데 사용되는 이미지가 있습니다.마우스 영역을 종료 할 때 끌기를 취소 할 수 없습니다.

Image 
{ 
    id: slideImg 
    source: "/slider/SliderSelected.png" 
    width: 65 
    height: 65 

    onDragActiveChanged: 
    { 


     if (!dragActive) 
     { 
      main.selection (x + slideImg.width/2 , true); 
     } 

    } 
    property bool dragActive: dragArea.drag.active 

} 

은 mouseArea은 다음과 같습니다

MouseArea 
{ 
    id: dragArea 
    anchors.fill: thumb 
    enabled: !isDisabled 
    height: 65 
    width: 463 
    drag 
    { 
     readonly property int dragThreshold: 10 
     target: thumb 
     minimumX: 0 
     minimumY: 0 
     maximumY:100 

     maximumX: mainElement.width - thumb.width 
     axis: Drag.XAxis 
     threshold: dragThreshold 
    } 
    onCanceled: { 
     console.log("onCanceled ") 

    } 
    onExited: { 
     console.log("onExited ") 
     Drag.cancel() 
    } 


} 

내가 sliderImage을 잡고 내가 드래그를 취소 할 것 슬라이더의 영역 밖에 밀어합니다. 드래그 영역은 마우스 영역으로 제한되어야합니다. 마우스 영역 밖으로 이동하면 드래그를 취소하고 싶습니다. 그러나 Drag.cancel()은 드래그를 취소하지 않습니다. 드래그를 취소 할 수있는 방법이 있습니까?

답변

0

나는이 당신을 위해 일한다고 생각이에 의해 달성하기 위해 무엇을하려고 잘 모르겠지만, 해제 drag.target

onExited: drag.target = null 
onEntered: drag.target = myTarget 

하려고합니다.

그러나 당신은 또한 마우스가 영역에있는 경우에만 사용할 수 있습니다 드러그 상태를 가지고 (상태를보고 할 수 있습니다.

MouseArea { 
    id: dragArea 
    anchors.fill: parent 

    states: [ 
     State { 
      when: dragArea.containsMouse 

      PropertyChanges { 
       target: dragArea 
       drag.target: dragger 
      } 
     } 
    ] 
} 

또한 최대 및 최소 X를보고 할 수 있습니다 Y 값. 이것은 아마도 당신이 정말로 찾고있는 것입니다.
위치를 자동으로 재설정하는 것이 가능하지 않겠지 만, ne 값을 추가 변수에 저장하여 쉽게 처리 할 수 ​​있습니다. , 한번 합법적으로 끌기를 끝내고 복원하면 복원하지 마십시오.

나는 너를 도울 수 있었으면 좋겠다.

+0

정말 도움이되었습니다. 감사합니다. :) – user2717079