QT QWebEngineView加载百度地图

2023-10-08 16:59

本文主要是介绍QT QWebEngineView加载百度地图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Qt5.5之后使用新的QWebEngineView代替了之前的QWebKit,加载数据的方式也由同步变成了异步。所以访问网站页面和加载HTML页面都需要使用QWebEngineView类。

项目要求在程序中显示地图,并能够通过串口接收无人机上图传里的GPS实时传回来的经纬度,并在地图上画出无人机的飞行轨迹。由于需要在QT中加载百度地图,所以需要用QWebEngineView进行QT与HTML/JavaScript的交互,在HTML文件中调用百度地图的API显示地图和地图上的一些控件。因为要实时显示无人机的位置并画出飞行轨迹,所以还需要能够在QT程序中调用HTML中的JS代码,显示位置画出轨迹。

由于是公司的项目,不方便把完整代码传上来,这里只贴出加载百度地图,并调用JS中函数的方法的代码,做一个记录,仅供参考。

 


效果

 


代码之路

一、添加QWebEngineView类

要安装QT的时候选择安装QWebEngineView才可以使用,使用时需要在pro文件中加入:

    QT       += webenginewidgets

二、添加QWebEngineView组件 

在QT提供的控件中是找不到QWebEngineView组件的,我们使用的时候其实是把一个QWidgets组件提升为QWebEngineView的,先在ui界面拖入一个QWidgets组件,在右边的对象中找到它,右键选择提升为

三、使用QWebEngineView加载HTML文件

组件提升为QWebEngineView后,我们就可以用它来加载HTML文件,并在其中显示

    QString htmlPath = "你的html文件的路径";ui->widget->load(QUrl(htmlPath));

四、在QT中调用HTML中的函数

    // command为调用的函数,revealMarker为函数名,可以带参数QString command = QString("revealMarker(%1,%2)").arg("参数1").arg("参数2");ui->widget->page()->runJavaScript(command);

五、HTML文件

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><title>基于GPS的位置追踪及地理围栏</title><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}p{margin-left:5px; font-size:14px;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你自己在百度地图官网申请的秘钥"></script>
</head><body><div id="allmap"></div></body>
</html><script type="text/javascript">// 百度地图API功能//地图初始化var map = new BMap.Map("allmap");map.centerAndZoom(new BMap.Point(116.404, 39.915), 5);var navigationControl = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT,type: BMAP_NAVIGATION_CONTROL_LARGE,enableGeolocation: true});map.addControl(navigationControl);            // 添加平移缩放控件map.addControl(new BMap.ScaleControl());      // 添加比例尺控件var overviewControl = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:true});map.addControl(overviewControl);              // 添加缩略图控件控件var mapType1 = new BMap.MapTypeControl({anchor: BMAP_ANCHOR_TOP_RIGHT,mapTypes:[BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]});map.addControl(mapType1);                     // 添加地图类型控件map.enableScrollWheelZoom();   //启用滚轮放大缩小,默认禁用//map.enableContinuousZoom();    //启用地图惯性拖拽,默认禁用map.enableKeyboard();          //启用键盘移动地图map.enableDragging();          //启用地图拖拽map.enableDoubleClickZoom();   //启用双击放大//显示GPS经纬度坐标查询的点
function revealMarker(lon,lat) {}//清除地图上标注的点
function deletePoint(){}//坐标转换完之后的回调函数
translateCallback = function (data) {if(data.status === 0) {}//把qt传过来的参数加入到数组中
function addPoint(longitude, latitude) {}//滤波函数
function filter() {}</script>

 

这篇关于QT QWebEngineView加载百度地图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166723

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring