2013-10-23 32 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

你不能那樣做,因爲只要你進入灰色區域,它就會得到焦點,並且(即使你將藍色區域懸停),藍色的droparea也不會收到事件。

你必須讓藍色區域成爲灰色地帶的一個孩子,但是現在出現了一個新問題:藍色區域上的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" 
    } 
}