从QML捕获鼠标事件

时间:2016-08-19 07:49:13

标签: qt qml qtquick2

我想创建一个QML项目,当鼠标移出它时它会消失。这是我的代码:

Item {
  id: disappearing_element

  ListView { ... }

  MouseArea {
    id: collapser
    anchors.fill: parent
    propagateComposedEvents: true
    hoverEnabled: true

    onExited: {
      disappearing_element.visible = false
    }
  }
}

效果很好,但MouseArea仅传播onClicked() onDoubleClicked()之类的事件(如Qt文档中所述)。

有没有办法通知disappearing_element的孩子关于鼠标输入和鼠标退出事件(不使用Popup元素)?

1 个答案:

答案 0 :(得分:0)

我认为这是开发QtQuick应用程序时的常见需求之一。我们目前经常使用的一种解决方案是在每个需要检查鼠标遏制的子项中添加MouseArea,并在鼠标进入或退出时发出信号(并在主项目中捕获这些信号)。

当儿童用品也需要这种机制来管理他们的孩子时,事情变得有点复杂。但是,对于常见用法,这种方法对我们来说已经足够了。