如何在另一个对象下面的对象上检测到onEntered信号?

时间:2015-11-18 09:37:16

标签: qml

当具有MouseArea的对象被具有MouseArea的另一个对象部分覆盖时,上部对象阻止onEntered信号被下部矩形接收。

我怎样才能解决这个问题,让下层对象可以在所有点接收onEntered?

e.g。让我们说我有2个矩形,都有一个MouseArea,上面的矩形覆盖了下方矩形的右下角。在下面的代码中,如果鼠标从右下角进入lowerRect(即当它已经在upperRect中时),则lowerRect不会检测onEntered。

Rectangle {
    id: lowerRect
    x: 0
    y: 0
    width: 100
    height: 100
    color: "blue"

    MouseArea {
        anchors.fill: parent
        hoverEnabled: true
        onEntered: console.log("lowerRect was entered")
    }
}

Rectangle {
    id: upperRect
    x: 50
    y: 50
    width: 100
    height: 100
    color: "green"
    opacity: 0.8

    MouseArea {
        anchors.fill: parent
        hoverEnabled: true
        onEntered: console.log("upperRect was entered")
    }
}

1 个答案:

答案 0 :(得分:0)

  • 获取mouseX&上方矩形的mouseY属性MouseArea
  • 检查它们是否位于下方矩形的范围内(您必须考虑下方矩形的xywidthheight。< / LI>

注意:    onEntered()仅在鼠标指针进入QML组件时跟踪鼠标位置。当矩形重叠时,它不会在特定时间发射。因此,请使用onPositionChanged()信号编写逻辑。