C++ 如何在Qt应用程序中的按住事件期间移动地理地图?

C++ 如何在Qt应用程序中的按住事件期间移动地理地图?,c++,qt,qml,C++,Qt,Qml,有一个程序在的“行编辑”中传输纬度和经度。但与此同时,移动卡片的机会也失去了。如何在按住事件期间使地图移动到鼠标后面 places_map.qml: import QtQuick 2.0 import QtLocation 5.6 import QtPositioning 5.6 Rectangle { id: rect Plugin { id: mapPlugin name: "osm" // "mapboxgl", "esri", ...

有一个程序在
的“行编辑”
中传输纬度和经度。但与此同时,移动卡片的机会也失去了。如何在按住事件期间使地图移动到鼠标后面

places_map.qml:

import QtQuick 2.0
import QtLocation 5.6
import QtPositioning 5.6

Rectangle {
    id: rect
    Plugin {
        id: mapPlugin
        name: "osm" // "mapboxgl", "esri", ...
        // specify plugin parameters if necessary
        // PluginParameter {
        //     name:
        //     value:
        // }
    }


    Map {
        id: map
        anchors.fill: parent
        plugin: mapPlugin
        center: QtPositioning.coordinate(59.91, 10.75) // Oslo
        zoomLevel: 14
    }

    MouseArea{
        anchors.fill: parent
        onClicked:  lineEdit.text = ""+ map.toCoordinate(Qt.point(mouse.x,mouse.y))
    }
}
mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QQmlContext>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->quickWidget->rootContext()->setContextProperty("lineEdit", ui->lineEdit);
}

MainWindow::~MainWindow()
{
    delete ui;
}
#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
#包括
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
ui->quickWidget->rootContext()->setContextProperty(“lineEdit”,ui->lineEdit);
}
MainWindow::~MainWindow()
{
删除用户界面;
}

移动地图的一种方法是使用手势,如下所示:

Map {
    [...]
    gesture.enabled: true
    gesture.acceptedGestures: MapGestureArea.PanGesture
}
但是当使用
MouseArea
时,它会阻止这些操作,因此我们可以使用
onPressed
onPositionChanged
创建相同的效果:

MouseArea{
    anchors.fill: parent

    property int lastX : -1
    property int lastY : -1

    onPressed : {
        lastX = mouse.x
        lastY = mouse.y
    }

    onPositionChanged: {
        map.pan(lastX-mouse.x, lastY-mouse.y)
        lastX = mouse.x
        lastY = mouse.y
    }
    onClicked:  lineEdit.text = ""+ map.toCoordinate(Qt.point(mouse.x,mouse.y))
}

@你好,这是你的节目。如何将地理地图区域移动到鼠标轨迹?您想在按住并拖动鼠标时移动地图吗?@eyllanesc是的。对不起,我不能习惯说英语的人总是被澄清。我有手势。enabled=true;一切都很好,但当我按下并移动鼠标指针时,地图不会立即开始平移,而是当鼠标指针在屏幕上移动约10-20px时,地图开始平移。你能提出一个解决方案吗?我在这里发布了一个问题:如果你能帮忙,那就太好了。非常感谢。