2014-10-06 40 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