2014-10-06 94 views
0

我有QML 2.0中的項目列表,並且只有當鼠標位於黑色鼠標區域內時,我纔想顯示項目的上下文菜單(圖片中的紅色框)。上下文菜單包含幾個按鈕,每個按鈕都有自己的museArea。在QtQuick 1.0中它按預期工作,但在2.0中不行。當我在小紅盒子(上下文菜單的項目)之間移動光標時,將調用黑色MouseArea :: onExited(並且不顯示上下文菜單)。它看起來像一個小小的紅色鼠標區域覆蓋了較大的黑色鼠標區域。如果我設置:QtQuick 2.0中的重疊鼠標區域

z: 10 

黑色鼠標區域,當光標上面紅色的小盒子onExited不叫,但我不能用小mouseares徘徊的影響。當光標位於紅框上方時,我應該怎麼做才能訪問小紅盒子的鼠標區域,同時不會調用黑鼠標區域:: onExited?

QtQuick 2.0 MouseAreas

+0

您應該添加儘可能短的(仍然完整且有效的)QML代碼以重現該問題。 – hyde 2014-10-06 07:07:36

回答

2

而不是依賴於鼠標區域的onExitedonEntered事件,你可以啓用懸停和檢查containsMouse財產。這是一個工作示例(QtQuick 2.0):

Column 
{ 
    spacing: 10 
    Repeater 
    { 
     model:4 
     Rectangle 
     { 
      height: 100 
      width: parent.width 
      border.color: "black" 

      MouseArea 
      { 
       id: mouseArea 
       anchors.fill: parent 
       hoverEnabled: true 
      } 

      Rectangle 
      { 
       visible: mouseArea.containsMouse 
       anchors.right: parent.right 
       anchors.top: parent.top 
       anchors.bottom: parent.bottom 
       anchors.margins: 20 
       width: 200 
       border.color: "red" 

       Rectangle 
       { 
        anchors.centerIn: parent 
        color: "purple" 
        width: 20 
        height: 20 
        MouseArea 
        { 
         anchors.fill: parent 
         onClicked: print("clicked") 
        } 
       } 
      } 



     } 
    } 
} 
2

如果MouseArea與其他MouseArea項目的區域重疊, 您可以選擇通過 p ropagateComposedEvents設置爲true和拒絕的事件傳播clickeddoubleClickedpressAndHold事件,這些其他項目應傳播 。有關 的詳細信息,請參閱propagateComposedEvents文檔。

Source