使用QWebEngineView加载本地html以及在线地图实例

Qt5.5之后使用新的QWebEngineView代替了QWebKit。加载数据的方式也由同步变成了异步。

load函数原型:

load(const QUrl &url)

QFile file(htmlPath);//直接加载本地html文件,外部对象由本地文件的相对路径查找,因此不需要设置
if (!file.exists())
{
	return;
}
this->load(QUrl("file:///" + htmlPath));

sethtml函数原型:

setHtml(const QString& html, const QUrl& baseUrl = QUrl())

QString htmlPath = QCoreApplication::applicationDirPath() + "/message/style2.html";//从此html文件中读取内容后写入webview
QUrl baseUrl = QCoreApplication::applicationDirPath() + "/message/";//外部对象,包括以下CSS和js文件
QFile file(htmlPath);
if (!file.open(QIODevice::ReadOnly))
{
	return;
}
QString htmlData = file.readAll().constData();
file.close();
this->setHtml(htmlData, baseUrl);

实例源码:

#include "QtGuiApplication1.h"
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
		
	QWebEngineView view;

/*************************使用load函数加载在线网页*****************************/
	view.load(QUrl("https://www.baidu.com"));
/************************************************************************************/	 

/***********************使用sethtml成员函数加载本地html**********************/
	QString htmlPath = "D:/test/gaode.html";        //从此html文件中读取内容后写入webview
	QUrl baseUrl = "file:///D:/test/gaode.html";     //外部对象,包括以下CSS和js文件
	QFile file(htmlPath);
	if (!file.open(QIODevice::ReadOnly))
	{
		return 0;
	}
	QString htmlData = file.readAll().constData();
	file.close();

	view.setHtml(htmlData,baseUrl);
/***********************************************************************************/

	view.resize(1500, 1500);

	view.show();
	
	return a.exec();

利用sethtml加载本地html效果图:

利用load加载在线html效果图:

你可能感兴趣的:(Qt)