在QML地图上动态启用/禁用平移

时间:2017-01-29 21:33:53

标签: qml

我需要动态地禁用和启用我的QML地图上的平移。 更详细地说,我需要按下按钮才能抑制平移,然后再按另一个按钮。 我在网上看了一下,但是找不到任何有帮助的东西,或者至少我没有发现它。有关于如何使用普通显示器和鼠标进行触摸手势的文档。

有办法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

根据文档(http://doc.qt.io/qt-5/qml-qtlocation-mapgesturearea.html#acceptedGestures-prop),您可以使用gesture.acceptedGestures并接受除MapGestureArea.PanGesture以外的所有内容。 这是一个示例,您可以打开和关闭平移:

Window {
    width: 512
    height: 512
    visible: true

    property bool disable_panning : false
    property int no_panning : (MapGestureArea.PinchGesture | MapGestureArea.FlickGesture |MapGestureArea.RotationGesture | MapGestureArea.TiltGesture)
    property int panning : (MapGestureArea.PanGesture | MapGestureArea.PinchGesture | MapGestureArea.FlickGesture |MapGestureArea.RotationGesture | MapGestureArea.TiltGesture)
    Map
    {
        anchors.fill: parent
        plugin: Plugin{ name: "osm"}

        gesture.acceptedGestures: disable_panning ? no_panning : panning

        RowLayout
        {
            Button
            {
                text: "Disable panning"
                onClicked: {
                    disable_panning = true
                }
            }
            Button
            {
                text: "Enable panning"
                onClicked: {
                    disable_panning = false
                }
            }
        }
    }
}