2013-10-23 3 views
7

한 번 드롭 대상이 활성화되면 커서가 원래 드롭 대상 위에있는 다른 놓기 대상으로 이동하더라도 여전히 활성 상태입니다.오버랩 드롭 대상을 올바르게 구현하는 방법은 무엇입니까?

다음은 QML 데모입니다. 파일을 회색 및 파란색 영역에 놓으십시오. 파란색은 절대로 활성화되지 않습니다.

import QtQuick 2.1 

Rectangle { 
    color: "grey" 
    width: 300 
    height: 300 

    DropArea { 
     anchors.fill: parent 
     onDropped: status.text = "Dropped on Grey"; 
    } 

    Rectangle { 
     color: "blue" 
     anchors.fill: parent 
     anchors.margins: 80 

     DropArea { 
      anchors.fill: parent 
      # Never active! 
      onDropped: status.text = "Dropped on Blue" 
     } 
    } 

    Text { 
     x: 10 
     y: 10 
     id: status 
     text: "Nothing dropped" 
    } 
} 

어떻게하면 회색 및 파란색 직사각형으로 떨어 뜨릴 수 있습니까?

+0

이 해결되었습니다 ?? – ustulation

답변

2

회색 영역에 들어가 자마자 초점을 얻고 파란색 영역을 가리키더라도 파란색 영역이 이벤트를받지 못하기 때문에 그렇게 할 수 없습니다.

파란색 영역을 회색 드롭 식 영역의 하위 항목으로 지정해야하지만 이제는 새로운 문제가 있습니다. 파란색 영역의 onDrop, 회색 영역도 이벤트를 가져 오므로 해당 이벤트를 차단해야합니다. 파란 드롭 (즉, blueDrop 속성 사용) :

Rectangle { 
    color: "grey" 
    width: 300 
    height: 300 

    DropArea { 
     id: greyDrop; 
     property bool blueDrop: false; 
     anchors.fill: parent 
     onDropped: blueDrop ? blueDrop = false : status.text = "Dropped on Grey"; 

     Rectangle { 
      color: "blue" 
      anchors.fill: parent 
      anchors.margins: 80 

      DropArea { 
       anchors.fill: parent 
       onDropped: { status.text = "Dropped on Blue"; greyDrop.blueDrop = true; } 
      } 

     } 
    } 
    Text { 
     id: status 
     text: "Nothing dropped" 
    } 
} 
관련 문제