从 QML 捕捉鼠标事件

Catching mouse events from QML

我想创建一个 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 元素)?

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

当 children 项目也需要这样的机制来管理它们的 children 时,事情就变得有点复杂了。但是,对于普通用法,这种方法现在对我们来说已经足够了。