是否可以将MouseArea的positionChanged事件传播到底层事件?
我已经尝试将最顶层MouseArea的任何现有信号处理程序的mouse.accepted设置为false,并将propagateComposedEvents设置为true。这两种方法都不起作用(尽管我对propagateComposedEvents不起作用并不感到惊讶,因为文档中说它只转发像clicked、doubleClicked和pressAndHold这样的事件)。
发布于 2013-08-08 03:12:28
根据您的结构,您总是可以通过让您的onPositionChanged处理程序调用underlyingMouseArea.positionChanged(鼠标)来手动传播事件,这应该会在底层MouseArea中手动发出信号。我唯一担心的是,您可能无法以这种方式传递MouseEvent对象(除了字符串之外,从未尝试过其他任何方法)。但是,您始终可以在C++中执行此手动发出,这绝对不会出现任何类型转换问题。
发布于 2014-05-22 09:38:03
除非您需要同时处理具有多个鼠标区域的位置更改事件,否则您可以尝试将顶部鼠标区域重置为父对象:
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');
}
}
}https://stackoverflow.com/questions/17959347
复制相似问题