问题
制作全局的定时器,当没有触摸事件超过一定时间,退出到登录认证页面。在QML中,item之间是相互堆叠的,后面的item在最上层。因此需要将MouseArea放在最上层,以检查鼠标触摸事件,也因此阻挡了下层item接收鼠标点击。
原因
在MouseArea中有个property:propagateComposedEvents,默认是false, 因此阻止了鼠标事件传递。同时在鼠标事件处理中设置mouse.accepted=false, 例: onClicked: { mouse.accepted = false }
解决
MouseArea {
…
propagateComposedEvents: true
…
onClicked: {
mouse.accepted = false
}
onPressed: {
mouse.accpted = false
}
…
}
其中的onPressed是必须要写的,我触摸屏操作时,只对onClicked事件做了设置,下层一直收不到鼠标事件,一度以为该方法无效。如果要透传其它事件,也要相应设置。

本文介绍如何在QML中实现全局定时器,用于监测无触摸事件并返回登录页面。通过调整MouseArea的propagateComposedEvents属性为true,并在事件处理中设置mouse.accepted=false,确保触摸事件能透传至下层Item。
2707

被折叠的 条评论
为什么被折叠?



