QML实战:MouseArea的鼠标事件穿透

问题

制作全局的定时器,当没有触摸事件超过一定时间,退出到登录认证页面。在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事件做了设置,下层一直收不到鼠标事件,一度以为该方法无效。如果要透传其它事件,也要相应设置。

你可能感兴趣的:(嵌入式系统开发,QT,QML,qml,qt)