QML MouseArea将事件传播到按钮

时间:2015-06-01 15:58:39

标签: android qt qml qtquick2

我正在开发一款应用程序,其菜单类似于适用于Android的Gmail / Inbox应用程序菜单。基本上,当您按下按钮打开菜单时,它会滑入视图。用户可以将其滑开或按菜单上的按钮。对于滑动,我使用kovrov中的代码SwipeArea进行了一些小改动,以检查按下和释放之间的速度 - 如果它太慢,我就不会这样做认为这是一个轻扫。我还在MouseArea上将propagate属性设置为true,即propagateComposedEvents: true,并为点击的事件添加了此代码:

onClicked: {
    mouse.accepted = false;
}

现在我有以下代码:

Button {
    x: 10
    y: 50
    width: 200
    onClicked: {
        console.log("Button clicked!");
    }
}
SwipeArea {
    anchors.fill: parent

    onMove: {
        var newX = menu.x + x;
        if(newX <= menu.maxX && newX >= menu.minX) menu.x = newX;
    }
    onSwipe: {
        if(direction === "left" && timePassed <= menu.fastSwipe) root.hideMenu(menu.x, timePassed);
        else {
            var middle = menu.width/2;
            var end = menu.x + menu.width;
            if(end > middle) root.showMenu(menu.x);
            else if(end <= middle) root.hideMenu(menu.x);
        }
    }
}

如果Button呈现在最顶层(SwipeArea下面的代码),它可以正常工作,但是滑动不会在Button之上工作。 如果Button替换为MouseArea,则会正确触发事件。似乎事件没有被传播?有没有办法将事件传播到Button?或者我是否必须创建自己的按钮(例如Rectangle MouseArea)?

感谢您的时间。

0 个答案:

没有答案