在拖放标记时,在qt qml中拖动标记时留下鼠标光标,速度更快。

问题描述 投票:0回答:1

我想拖动一个MapQuickItem,这个MapQuickItem是在组件中声明的,并从地图中获取实时坐标,我可以成功拖动组件,但我拖动MapQuickItem时,鼠标光标快速离开MapQuickItem,拖动中断。如何才能在拖动时使鼠标光标和MapQuickItem同步。

Map {
id: map
anchors.fill: parent
activeMapType: supportedMapTypes[1];
zoomLevel: 18
plugin: hereMaps
center: QtPositioning.coordinate(19.997454, 73.789803)

MapItemView {
    id: markerItem
    model: [
        { id: "marker1", color: "red" },
        { id: "marker2", color: "green" },
     ]
    delegate: mapMarkerComponent
}

Component {
    id : mapMarkerComponent

    MapQuickItem {
        id: mapMarker
        coordinate: QtPositioning.coordinate(19.997454, 73.789803)

        sourceItem: Rectangle {

            id: handle
            color: modelData.color
            width: 40
            height: 40

            MouseArea {
                drag.target: parent
                anchors.fill: parent
            }

            onXChanged: {
                mapMarker.x += x
            }

            onYChanged: {
                mapMarker.y += y
              }
          }
        onCoordinateChanged{
        consol.log("coord",QtPositioning.coordinate(mapMarker.x ,mapMarker.y )}
      }
   }
}
qt drag-and-drop qml draggable marker
1个回答
0
投票

当使用MouseArea拖动时,你不需要这样更新mapMarker的位置。根据你拖动的方式,这将导致将mapMarker(以及MouseArea)从鼠标位置下移出。

相反,只需通过设置drag.target: mapMarker让MouseArea自己拖动目标,并摆脱你的onXChanged和onYChanged处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.