从 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 时,事情就变得有点复杂了。但是,对于普通用法,这种方法现在对我们来说已经足够了。
我想创建一个 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 时,事情就变得有点复杂了。但是,对于普通用法,这种方法现在对我们来说已经足够了。