13

是否可以将 's positionChanged 事件传播MouseArea到底层事件?

我尝试将 to 设置mouse.acceptedfalse最顶层的任何现有信号处理程序,并将 toMouseArea设置propagateComposedEventstrue. 这些都不起作用(尽管我对不起作用并不感到惊讶,propagateComposedEvents因为文档说它只传递事件,如clicked,doubleClickedpressAndHold)。

4

2 回答 2

3

根据您的结构,您始终可以通过让 onPositionChanged 处理程序调用底层MouseArea.positionChanged(mouse) 手动传播事件。这应该在底层MouseArea 中手动发出信号。我唯一担心的是您可能无法以这种方式传递 MouseEvent 对象(从未尝试过使用字符串以外的任何东西)。但是,您始终可以在 C++ 中执行此手动发出,这绝对不会遇到任何类型转换问题。

于 2013-08-07T19:12:28.283 回答
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');
        }
    }
}

有一个未解决的错误报告

于 2014-05-22T01:38:03.277 回答