【发布时间】:2020-12-28 08:51:56
【问题描述】:
我有两个矩形,每个矩形都有一个TapHandler。矩形 A 是矩形 B 的父级
怎么配置A和B,使得点击B时EventPoint不会传播到A的onSingleTapped处理函数?
EventPoint docs 建议将其accepted 属性设置为true:
将accepted 设置为true 可防止将事件传播到PointerHandler 的Item 下面的Item。
但是,与此同时,文档声明 accepted 是一个只读属性,这没有多大意义(我猜文档已经过时或根本是错误的)。
测试代码:
Rectangle {
id: a
width: 200
height: 200
color: "yellow"
TapHandler {
onSingleTapped: console.log("A tapped")
}
Rectangle {
id: b
color: "blue"
width: 100
height: 100
TapHandler {
onSingleTapped: function(eventPoint) {
// Stop propagation.
eventPoint.accepted = true
console.log("B tapped")
}
}
}
}
更新:将 B 的 gesturePolicy 设置为 TapHandler.ReleaseWithinBounds 可防止 A 接收事件。不确定这是否真的是最好的解决方案
【问题讨论】:
标签: qt qml event-propagation