QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示

前言

在上一个地图展示的博客中,你会发现整个界面都是地图,但是我们在通信的时候会有界面控件存在,以此来进行与地图的交互。如图所示(图源网络)。
在这里插入图片描述

所以上一篇文章中的界面肯定不是我们想要的,由于QT里面没有QWebEngineView的可视化界面控件,因此为了实现这一目标,我暂时想到两种方法:(1)可以写两个界面进行控制;(2)也可以进行控件的提升让它作为可视化控件。其实在我看来这两个是异曲同工的,所以本文用GraphicsView实现对控件的提升。

一、选择控件

在这里插入图片描述
用GraphicsView这个,谢谢,我尝试过通过widge的显示图片地图,但是最后不能交互。(内容放在后面了,如果有大佬看到,请指点一二)。
提升为QWebEngineView即可,布局设置如图。
在这里插入图片描述
然后上代码。
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
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_site_clicked();

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

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDir>
#include<bridge.h>
#include<QString>
#include<QDebug>
#include<QtWebEngineWidgets/QWebEnginePage>

#pragma execution_character_set("utf-8")

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

    //加载HTML文件
    QDir temDir("C:/Users/16198/Desktop/LearnToA/C++Learn/QTCode/day9/map/baidumap.html");
    QString absDir = temDir.absolutePath();
    QString filePath = "file:///" + absDir;
    //显示地图
    ui->map->page()->load(QUrl(filePath));
    //地图显示
    //ui->map->show();

}

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

}

显示结果:
在这里插入图片描述

二、错误显示示范(后期不能js交互)

首先加载一个C++类(不需要界面)。选择QWidget作为基类。
在这里插入图片描述
然后代码设计如下,其实就是加载地图的代码。
bdmap.h

#ifndef BDMAP_H
#define BDMAP_H

#include <QWidget>
#include<QtWebEngineWidgets/QWebEngineView>
class bdmap : public QWidget
{
    Q_OBJECT
public:
    explicit bdmap(QWidget *parent = nullptr);

private:
    QWebEngineView *map;

protected:
    void resizeEvent(QResizeEvent *event);

signals:

};

#endif // BDMAP_H

bdmap.cpp

#include "bdmap.h"
#include<QString>
#include<QWebEngineView>
bdmap::bdmap(QWidget *parent) : QWidget(parent)
{
    map = new QWebEngineView(this);
    //加载HTML文件
    map->page()->load(QString("file:///C:/Users/16198/Desktop/LearnToA/C++Learn/QTCode/day9/add_map/baidumap.html"));
    //地图显示
    map->show();
}
void bdmap::resizeEvent(QResizeEvent *event)
{
    map->resize(this->size());
}

提升的控件用容器控件containers中的Widget这里你可以用两个widget,其中一个放地图显示,一个放按钮等控件。
提升流程:
点击右键提升为,然后设置如下:点击全局包含(这个是方便复用,这里这个可加可不加),然后添加——>提升即可。
在这里插入图片描述

设计一下布局,这个widget在布局的时候会直接缩小的没了,在这里你要设计这个的最小的size。这样就能进行好好地布局了。
在这里插入图片描述
在这里插入图片描述
界面代码的实现
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QtWebEngineWidgets/QWebEngineView>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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


private:
    Ui::MainWindow *ui;

};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDir>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

其实这两个没有改代码,是最开始生成项目时候的文件。
最后运行结果如图:
在这里插入图片描述

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Qt5是目前比较流行的一款跨平台UI开发框架,而百度地图是广泛使用的地图服务平台。基于Qt5开发百度地图可以实现丰富的地图显示和功能,比如地图缩放、地图移动、标记点、路径规划等等。以下介绍Qt5百度地图开发学习的一些重要内容: 1. 在Qt5中使用百度地图API提供的JS版本的JavaScript编程接口。这个接口非常庞大,涵盖了地图显示地图件、事件处理、服务调用等方面。需要熟练掌握地图API并理解其使用方式。 2. Qt5提供了WebEngine模块来支持网页显示和JavaScript编程,这在开发百度地图应用时非常重要。学习WebEngine的知识,理解网页加载、JavaScript运行等过程,可以使得地图应用更加丰富和复杂。 3. Qt5中的QML语言能够很好地支持百度地图开发,因为QML是一种高效且易于阅读的XML风格的页面描述语言。熟练掌握QML的语言特点和使用方式可以让地图应用开发更加便捷。 4. 熟悉Qt5中的一些地图相关的开源项目,比如QMapControl和QGeoMapWidget等,这些项目提供了实现地图功能的方法和范例。阅读和理解这些项目的源代码可以加深地图应用开发的技能。 总之,Qt5百度地图开发学习需要掌握Qt5编程、网页技术、地图API和地图项目源代码等方面的知识。积极参与开源项目和社区可以获得更多的经验和知识。当然,需要不断动手实践和测试,才能真正掌握Qt5百度地图开发的技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四面楚歌吾独唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值