是否可以将MouseArea
的positionChanged事件传播到基础事件?
我尝试为最顶层mouse.accepted
的任何现有信号处理程序设置false
到MouseArea
,并将propagateComposedEvents
设置为{{1 }}。这些都没有奏效(虽然我对true
无法正常工作感到惊讶,因为文档说它只会传递propagateComposedEvents
,clicked
和doubleClicked
等事件。
答案 0 :(得分:3)
根据您的结构,您可以通过让onPositionChanged处理程序调用underlyingMouseArea.positionChanged(mouse)来手动传播事件。这应该在底层MouseArea中手动发出信号。我唯一担心的是你可能无法以这种方式传递MouseEvent对象(从未尝试过除字符串以外的任何东西)。但是,您始终可以在C ++中执行本手册发射,这绝对不会受到任何类型转换问题的影响。
答案 1 :(得分:1)
除非您需要同时处理多个鼠标区域的位置更改事件,否则您可以尝试重新显示鼠标顶部区域:
import QtQuick 2.2
import QtQuick.Layouts 1.1
Rectangle {
id: __root
color: "lightgreen"
width: 360
height: 360
Rectangle {
id: rect2
width: 100; height: 100
color: "cyan"
MouseArea {
parent: __root // set 'logical' parent
anchors.fill: rect2 // set 'visual' ancestor
hoverEnabled: true
onPositionChanged: {
console.log('mouse area 2 onPositionChanged');
}
}
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
console.log('mouse area 1 onPositionChanged');
}
}
}