VS2019+Qt5.15 在线显示百度地图

1.Qt5.15编译程序需要选择mscv2019 Release版本

2.需要到百度地图开发平台注册并获取到开发者key

3.显示地图是JS与Qt的交互过程,显示地图的html文件:

 

	 
		 
		 
		BDMap Sample 
		 
		 
		   
	 

	 
		

4.需要将Qt\Qt5.15.2\Examples\Qt-5.15.2\webchannel\shared下的qwebchannel.js拷贝到与html文件同级目录下

5.显示界面,需要将空间QWidget提升为QWebEngineView(需要手动输入到提升的类名称中,再点击添加,记得选择全局包含)

VS2019+Qt5.15 在线显示百度地图_第1张图片

 6.具体实现程序:

pro中添加:QT       += webenginewidgets

h文件:

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

public slots:
    //用于与html文件交互获取实时位置坐标
    void getCoordinates(QString lon, QString lat);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

cpp文件:

#include "widget.h"
#include "ui_widget.h"

#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QString htmlPath = qApp->applicationDirPath() + "/html/baidumap.html";
    qDebug()<widget->page());
//    ui->widget->page()->setWebChannel(webChannel);
//    webChannel->registerObject(QString("JSInterface"), this);

//    ui->widget->page()->load(QUrl("file:///" + htmlPath));

    QWebEnginePage* page = new QWebEnginePage();
    QWebChannel* channel = new QWebChannel();
    channel->registerObject(QString("JSInterface"), this);
    page->load(htmlPath);
    page->setWebChannel(channel);

    ui->widget->setPage(page);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    QString lon = ui->lineEdit->text();
    QString lat = ui->lineEdit_2->text();
    QString cmd = QString("addMarker(%1, %2)").arg(lon).arg(lat);
    qDebug()<widget->page()->runJavaScript(cmd);
}

void Widget::getCoordinates(QString lon, QString lat)
{
    ui->lineEdit->setText(lon);
    ui->lineEdit_2->setText(lat);
}

7.程序显示

VS2019+Qt5.15 在线显示百度地图_第2张图片

 

你可能感兴趣的:(QT,qt,开发语言)