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事件做了设置,下层一直收不到鼠标事件,一度以为该方法无效。如果要透传其它事件,也要相应设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值