Qt使用qml(QtLocation)显示地图

news/2024/11/17 7:24:23/

一、qt版本和QtLocation模块版本确认

如果qt版本过低的话是没有QtLocation模块的,我的版本如下
在这里插入图片描述
构建工具版本如下
在这里插入图片描述

二、qml代码编写

1、工程中添加模块

首先在工程中添加模块quickwidgets positioning location
在这里插入图片描述

2、添加资源文件

在这里插入图片描述

3、在资源文件中添加qml文件

在这里插入图片描述

4、qml代码编写

import QtQuick
import QtLocation
import QtPositioning
import QtQuick.Controls
Rectangle {width: parentheight: parentvisible: trueControl{id:labelcppobjectName: 'labelcpp'font.pointSize: 38property real latitudeSave: 22.64018property real longitudeSave: 113.92746//cpp调用这个函数function getText(){return  map.center + " zoom " + map.zoomLevel.toFixed(3)+ " min " + map.minimumZoomLevel + " max " + map.maximumZoomLevel}function setCoordinate(latitude,longitude){latitudeSave = latitudelongitudeSave = longitudemap.center.latitude = latitudemap.center.longitude = longitudemap.update()console.log("latitude="+latitude+"   longitude="+longitude);}}Plugin {id: mapPluginname: "osm"
//        PluginParameter { name: "osm.mapping.providersrepository.address"; value: "http://www.mywebsite.com/osm_repository" }
//        PluginParameter { name: "osm.mapping.highdpi_tiles"; value: true }}Map {id: mapanchors.fill: parentplugin: mapPlugincenter: QtPositioning.coordinate(22.64018, 113.92746) // OslozoomLevel: 14property geoCoordinate startCentroidPinchHandler {id: pinchtarget: nullonActiveChanged: if (active) {map.startCentroid = map.toCoordinate(pinch.centroid.position, false)}onScaleChanged: (delta) => {map.zoomLevel += Math.log2(delta)map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position)}onRotationChanged: (delta) => {map.bearing -= deltamap.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position)}grabPermissions: PointerHandler.TakeOverForbidden}WheelHandler {id: wheel// workaround for QTBUG-87646 / QTBUG-112394 / QTBUG-112432:// Magic Mouse pretends to be a trackpad but doesn't work with PinchHandler// and we don't yet distinguish mice and trackpads on Wayland eitheracceptedDevices: Qt.platform.pluginName === "cocoa" || Qt.platform.pluginName === "wayland"? PointerDevice.Mouse | PointerDevice.TouchPad: PointerDevice.MouserotationScale: 1/120property: "zoomLevel"}DragHandler {id: dragtarget: nullonTranslationChanged: (delta) => map.pan(-delta.x, -delta.y)}Shortcut {enabled: map.zoomLevel < map.maximumZoomLevelsequence: StandardKey.ZoomInonActivated: map.zoomLevel = Math.round(map.zoomLevel + 1)}Shortcut {enabled: map.zoomLevel > map.minimumZoomLevelsequence: StandardKey.ZoomOutonActivated: map.zoomLevel = Math.round(map.zoomLevel - 1)}Component.onCompleted: {map.addMapItem(circle)}}MapCircle {id: circlecenter: QtPositioning.coordinate(labelcpp.latitudeSave,labelcpp.longitudeSave)radius: 50border.width: 5//鼠标按住后可移动MouseArea {anchors.fill: parentdrag.target: parent}}
}

Control是用来和c++进行数据交互的,通过setCoordinate发送坐标,在地图上定点,getText是用来获取地图的中点和地图缩放等级的。

5、和c++进行交互发送坐标点

void MainWindow::on_pushButton_clicked()
{QQuickItem *root = ui->quickWidget->rootObject();//拿到所有对象的列表auto labelqml = root->findChild<QObject*>("labelcpp");//名字要与main.qml中的 objectName: 'labelcpp' 相同QVariant ret;QMetaObject::invokeMethod(labelqml, "setCoordinate", Q_ARG(QVariant, 22.65599), Q_ARG(QVariant, 113.92576));qDebug() << ret.toString();
}

三、效果展示

在这里插入图片描述


http://www.ppmy.cn/news/1050012.html

相关文章

【QT】重写QAbstractLIstModel,使用ListView来显示多列数据

qt提供了几个视图来进行信息的列表显示&#xff0c;QListView可以用来显示继承QStractListModel的字符串列表中的字符串&#xff0c;默认的模型里面只包含一列的内容&#xff1a; 这里以qml为例子&#xff0c;先新建一个qml的项目&#xff0c;示例代码如下&#xff1a; 先创建一…

MySQL——基础——自连接

一、自连接 自连接查询语法&#xff1a; SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...; 自连接查询,可以是内连接查询,也可以是外连接查询 二、自连接演示 1.查询员工 及其 所属领导的名字(将一张表看作是两张同样的表,一张是员工信息表,另一张是老板信息表。员…

[管理与领导-38]:IT基层管理者 - 人的管理 - 左膀右臂下属要离职,怎么办?是放手还是留?

目录 一、考虑因素 二、放手的原因 1.1 胸襟 1.2 与团队不匹配 三、如何避免核心员工离职造成对团队的重大影响 四、如何降低成员离职的影响 五、如何团队过渡依赖个人 六、能力强的员工会离职&#xff0c;为什么还要培养员工 一、考虑因素 当左膀右臂下属要离职时&am…

python中(限小白,大佬勿入)python开发中的trick:常量

开场白 我是小白&#xff0c;今天被前端骂了一顿&#xff1a;我们交接不是说好了就给你四个变量&#xff1a;A&#xff0c;B。C。D。你这命名的这么具体&#xff0c;我这边给你传值不是很方便啊&#xff08;因为不同模块有复用的图片路径&#xff09;&#xff0c;我说“那我改&…

Linux--贪吃蛇项目

C语言获取键盘输入的函数&#xff1a;getchar&#xff1b;scanf&#xff1b;gets。需要回车才能响应 贪吃蛇项目&#xff1a; 1、ncurse&#xff1a; 可取代ncurse的&#xff1a;C图形库GTK&#xff1b;C图形库QT。基本落伍 使用ncurse是因为按键响应及时&#xff0c;不需要回车…

【腾讯云 TDSQL-C Serverless 产品体验】基于腾讯云轻量服务器以及 TDSQL-C 搭建 LNMP WordPress 博客系统

文章目录 一、前言二、数据库发展与云原生数据库2.1 数据库发展简介2.2 云原生数据库简介2.2.1 云数据库与云原生数据库区别 三、腾讯云 TDSQL-C 数据库3.1 什么是腾讯云 TDSQL-C 数据库3.2 为什么推出 TDSQL-C 数据库&#xff1f;传统 MySQL 架构存在较多痛点3.2.1 传统 MySQL…

S05-巧用单元格格式转换数据

视频教程 文章目录 S05-巧用单元格格式转换数据 S05-巧用单元格格式转换数据 格式类型默认格式&#xff08;常规&#xff09;转换格式数值1.21.200货币1.2&#xffe5;1.20会计专用1.2&#xffe5;1.20日期43567四月十二日时间0.3333333338:00 AM百分比1.2120.00%分数0.21/5科…

Spark 图计算ONEID 进阶版

0、环境信息 本文采用阿里云maxcompute的spark环境为基础进行的&#xff0c;搭建本地spark环境参考搭建Windows开发环境_云原生大数据计算服务 MaxCompute-阿里云帮助中心 版本spark 2.4.5&#xff0c;maven版本大于3.8.4 ①配置pom依赖 详见2-1 ②添加运行jar包 ③添加配置信…