2013-10-23 10 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" 
    } 
} 
関連する問題