Flickable中的MouseArea阻止它轻弹

rsh*_*sht 7 qt qml qt-quick qt5

我正在使用MouseArea实现手势捕捉器(向左/向右滑动).它应该在Flickable内部使用垂直flickableDirection.此外,它应该以可视堆栈顺序将鼠标事件传播到其下的其他元素.问题是,将propagateComposedEvents设置为true的子mouseArea 在完成一次单击之前阻止任何父级的轻弹.首次点击后,它正常工作.这是显示此内容的简化代码.

import QtQuick 2.4
import QtQuick.Window 2.2

Window {
    id: __root
    visible: true
    width: 460; height: 640

    Flickable {
        id: mainFlickable

        width: parent.width
        height: parent.height
        contentHeight: column.height
        flickableDirection: Flickable.VerticalFlick

        MouseArea {
            anchors.fill: parent
            propagateComposedEvents: true
            z: 1
        }

        Column {
            id: column

            width: parent.width

            Repeater {
                model: 5

                Rectangle {
                    width: __root.width
                    height: 200

                    color: "yellow"
                    border.width: 2

                    MouseArea {
                        anchors.fill: parent

                        onClicked: {
                            console.log("clicked")
                        }
                    }
                }
            } //repeater
        } //column
    } //flickable
} //window
Run Code Online (Sandbox Code Playgroud)

我花了很多时间来解决这个问题并且会感激任何帮助.提前致谢!

rsh*_*sht 7

我发现在MouseArea中跟随信号处理程序是一种解决方法,不要破坏我的代码:

onReleased: {
    if (!propagateComposedEvents) {
        propagateComposedEvents = true
    }
}
Run Code Online (Sandbox Code Playgroud)

propagateComposedEvents应该false在声明(或ommited)上设置.

谢谢大家的努力!