gpt4 book ai didi

c++ - 如何在 Qt 应用程序中的 pressAndHold 事件期间移动 map ?

转载 作者:行者123 更新时间:2023-11-30 05:05:33 26 4
gpt4 key购买 nike

“Line Edit”中有一个传输经纬度的程序。但同时失去了移动卡的机会。如何在 pressAndHold 事件期间让 map 移动到鼠标后面?

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))
}
}

主窗口.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;
}

最佳答案

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

Map {
[...]
gesture.enabled: true
gesture.acceptedGestures: MapGestureArea.PanGesture
}

但是当使用 MouseArea 时,它会阻止这些操作,因此我们可以使用 onPressedonPositionChanged 来创建相同的效果:

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))
}

关于c++ - 如何在 Qt 应用程序中的 pressAndHold 事件期间移动 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48281695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com