Qt使用qml(QtLocation)显示地图

一、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.mzph.cn/news/42683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins改造—nginx配置鉴权

先kill掉8082的端口进程 netstat -natp | grep 8082 kill 10256 1、下载nginx nginx安装 EPEL 仓库中有 Nginx 的安装包。如果你还没有安装过 EPEL&#xff0c;可以通过运行下面的命令来完成安装 sudo yum install epel-release 输入以下命令来安装 Nginx sudo yum inst…

windows上的docker自动化部署到服务器脚本

1、mvn install后&#xff0c;双击这个bat&#xff0c;实现docker build后上传到124服务器&#xff0c;并且重启124服务器 **echo offsetlocal:: 定义镜像名称和版本变量 set IMAGE_NAMEweb set IMAGE_VERSION1.3.1:: 清理本地文件 echo Cleaning up... del service-%IMAGE_N…

中大许少辉博士中国建筑出版传媒八一新书《乡村振兴战略下传统村落文化旅游设计》百度百科新闻

中大许少辉博士中国建筑出版传媒八一新书《乡村振兴战略下传统村落文化旅游设计》百度百科新闻&#xff1a; 乡村振兴战略下传统村落文化旅游设计 - 百度百科 https://baike.baidu.com/item/乡村振兴战略下传统村落文化旅游设计/62588677 概览 《乡村振兴战略下传统村落文化旅游…

c++——静态成员变量、静态成员函数和const修饰的静态成员变量

一、c静态成员变量 在C中&#xff0c;静态成员变量&#xff08;Static Member Variable&#xff09;是类的一种特殊类型的成员变量&#xff0c;它被类的所有实例共享&#xff0c;而不是每个实例都有自己的副本。静态成员变量在类的所有对象之间保持唯一的状态&#xff0c;具有…

MySQL 中文全文检索

创建索引&#xff08;MySQL 5.7.6后全文件索引可用WITH PARSER ngram&#xff0c;针对中文&#xff0c;日文&#xff0c;韩文&#xff09; ALTER TABLE 表 ADD FULLTEXT 索引名 (字段) WITH PARSER ngram;或者CREATE FULLTEXT INDEX 索引名 ON 表 (字段) WITH PARSER ngram; …

Redisson实现分布式锁示例

一、引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version></dependency>二、配置类 import org.redisson.Redisson; import org.redisson.api.RedissonClient;…

使用opencv进行文本增强

文本增强: import cv2 import numpy as np# 读取图像 image = cv2.imread(E:/image.jpg, cv2.IMREAD_GRAYSCALE)# 二值化图像 _, binary_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)# 膨胀操作 kernel = np.ones((3, 3), np.uint8) dilated_…

Python Flask蓝图使用

使用示例&#xff1a; user.py from utils.sql import supabase from flask import Blueprint,request, session from utils.entity import r user_bp Blueprint(user, __name__, url_prefix/user)"""----------------------------------------API: 用户登录…

Hadoop学习:深入解析MapReduce的大数据魔力(三)

Hadoop学习&#xff1a;深入解析MapReduce的大数据魔力&#xff08;三&#xff09; 3.5 MapReduce 内核源码解析3.5.1 MapTask 工作机制3.5.2 ReduceTask 工作机制3.5.3 ReduceTask 并行度决定机制 3.6 数据清洗&#xff08;ETL&#xff09;1&#xff09;需求2&#xff09;需求…

uni-app封装api请求

前端封装api请求 前端封装 API 请求可以提高代码的可维护性和重用性&#xff0c;同时使得 API 调用更加简洁和易用。 下面是一种常见的前端封装 API 请求的方式&#xff1a; 创建一个 API 封装模块或类&#xff1a;可以使用 JavaScript 或 TypeScript 创建一个独立的模块或类来…

Java数据库连接池原理及spring boot使用数据库连接池(HikariCP、Druid)

和线程池类似&#xff0c;数据库连接池的作用是建立一些和数据库的连接供需要连接数据库的业务使用&#xff0c;避免了每次和数据库建立、销毁连接的性能消耗&#xff0c;通过设置连接池参数可以防止建立连接过多导致服务宕机等&#xff0c;以下介绍Java中主要使用的几种数据库…

【学习FreeRTOS】第11章——FreeRTOS中任务相关的其他API函数

1.函数总览 序号函数描述1uxTaskPriorityGet()获取任务优先级2vTaskPrioritySet()设置任务优先级3uxTaskGetNumberOfTasks()获取系统中任务的数量4uxTaskGetSystemState()获取所有任务的状态信息5vTaskGetInfo()获取单个任务的状态信息6xTaskGetCurrentTaskHandle()获取当前任…

Excel自动化办公——Openpyxl的基本使用

Excel自动化办公——Openpyxl的基本使用 个人感觉&#xff0c;相比Pandas&#xff0c;openpyxl对Excel的操作更为细致&#xff0c;Pandas则更适用于统计计算&#xff1b; 01 基本环境02 Excel数据读取操作03 案例04 向Excel写入数据05 表数据定向修改06 单元格样式制定07 单元…

原型对象的简单了解

在前面学习java有一个概念叫做继承&#xff0c;方便我们对父类方法、变量等的调用。对前端的学习我们需要让对象可以访问和继承其他对象的属性和方法&#xff0c;就需要了解原型对象&#xff0c;以及原型链。 一、原型 构造函数通过原型分配的函数是所有对象所共享的。每一个构…

【Lua语法】算术、条件、逻辑、位、三目运算符

1.算术运算符 加减乘除取余&#xff1a; - * / % Lua中独有的&#xff1a;幂运算 ^ 注意&#xff1a; 1.Lua中没有自增自减(、–)&#xff0c;也没有复合运算符(、-) 2.Lua中字符串可以进行算术运算符操作&#xff0c;会自动转成number 如&#xff1a;“10.3” 1 结果为11.3…

回归预测 | MATLAB实现SOM-BP自组织映射结合BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SOM-BP自组织映射结合BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SOM-BP自组织映射结合BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…

【css动画】向下的动态箭头

前言 使用css实现一组向下的动态箭头效果&#xff0c;如下图 思路 1.使用svg画箭头 2.设置keyframes&#xff0c;主要是每个箭头加不同的延时。 代码 <div class"down-arrow"><svg id"more-arrows"><polygonclass"arrow-top&quo…

Spark第三课

1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…

[JavaWeb]【七】web后端开发-MYSQL

前言&#xff1a;MySQL是一种流行的关系型数据库管理系统,它的作用是存储和管理数据。在Web开发中,MySQL是必备的数据库技能之一,因为它可以帮助Web开发人员处理大量的数据,并且提供了强大的数据查询和管理功能。 一 数据库介绍 1.1 什么是数据库 1.2 数据库产品 二 MySQL概述…

Servlet+JDBC实战开发书店项目讲解第六篇:订单实现

ServletJDBC实战开发书店项目讲解第六篇&#xff1a;订单实现 1. 数据库设计 在订单实现之前&#xff0c;我们需要对数据库进行相应的设计。在这个书店项目中&#xff0c;我们可以创建以下两个表来实现订单功能&#xff1a; 1.1 订单表(Order) 订单ID(order_id)&#xff1a…