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

文章目录

  • 前言
  • 一、选择控件
  • 二、错误显示示范(后期不能js交互)

前言

在上一个地图展示的博客中,你会发现整个界面都是地图,但是我们在通信的时候会有界面控件存在,以此来进行与地图的交互。如图所示(图源网络)。
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第1张图片

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

一、选择控件

QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第2张图片
用GraphicsView这个,谢谢,我尝试过通过widge的显示图片地图,但是最后不能交互。(内容放在后面了,如果有大佬看到,请指点一二)。
提升为QWebEngineView即可,布局设置如图。
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第3张图片
然后上代码。
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
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
#include
#include
#include
#include

#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;
}

}

显示结果:
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第4张图片

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

首先加载一个C++类(不需要界面)。选择QWidget作为基类。
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第5张图片
然后代码设计如下,其实就是加载地图的代码。
bdmap.h

#ifndef BDMAP_H
#define BDMAP_H

#include 
#include
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
#include
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,其中一个放地图显示,一个放按钮等控件。
提升流程:
点击右键提升为,然后设置如下:点击全局包含(这个是方便复用,这里这个可加可不加),然后添加——>提升即可。
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第6张图片

设计一下布局,这个widget在布局的时候会直接缩小的没了,在这里你要设计这个的最小的size。这样就能进行好好地布局了。
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第7张图片
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第8张图片
界面代码的实现
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include
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
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

其实这两个没有改代码,是最开始生成项目时候的文件。
最后运行结果如图:
QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示_第9张图片

你可能感兴趣的:(Qt5百度地图学习,qt,百度)