QT调用百度地图并返回点击地的经纬度

博客介绍了如何在QT环境中使用QWebEngineView与百度地图API交互,以获取地图上点击位置的经纬度。首先,博主解决了编译环境问题,然后添加QWebEngineView组件并提升为QWebEngineView类。接着,通过QWebChannel创建JS交互通道,加载HTML文件并与之通信。HTML文件包含了地图显示、点击事件处理和经纬度获取功能。最终,展示了程序运行效果,能够显示地图、设置中心点以及获取地图上点击位置的经纬度。
摘要由CSDN通过智能技术生成

最近需要使用百度地图,并返回某个点的经纬度值。网上基本都是根据经纬度定位,而没有获取经纬度的。自己用QT简单实现了下。

1、编译环境搭建

这块耗时最久。因为之前QT默认的MinGW 64bit无法编译,需要安装MSVC2017(注意:安装Visual Studio 2017,最开始安装2022也不行)。安装过程,自行百度。

2、添加QWebEngineView组件

Qt5.5之后使用新的QWebEngineView代替了之前的QWebView,加载数据的方式也由同步变成了异步。所以访问网站页面和加载HTML页面都需要使用QWebEngineView类。而在QT提供的控件中是找不到QWebEngineView组件的。
先选个Graphics view控件,命名为mappage,然后右键,找到“提升为”,在对话框中的“提升的类名称”,输入QWebEngineView,点击添加即可。

在添加两个按钮进行定位及获取经纬度,两个lineEdit显示经纬度。简单UI如下

3、添加QWebEngineView类

在这里插入图片描述

4、直接上代码

mainwindow.h如下

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWebEngineHistory>
#include <QWebEngineHistoryItem>
#include <QWebEnginePage>
#include <QWebEngineView>
#include <QtWebEngineWidgets/QtWebEngineWidgets>

QT_BEGIN_NAMESPACE
namespace Ui {
    class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp中,通过QWebChannel创建一个与网页交互的通道,通道ID 为 JSBaidumap。加载网页,并进行参数传递及获取。
代码如下:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
   
    ui->setupUi(this);
    QString htmlPath = QCoreApplication::applicationDirPath() + "/html/";
    QString htmlFile = htmlPath 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值