背景:
实际开发过程中遇到的QWebEngineView相关接口调用记录
相关问题的解决:
1、网页下载链接点击无反应问题
QWebEngineView内部提供过网页链接下载的类QWebEngineDownloadItem,需要自己实现具体点击下载链接后的效果
具体实现例子:
//头文件包含
#include <QWebEngineProfile>
#include <QWebEngineDownloadItem>
#include <QFileDialog>
// 构造connect
connect(QWebEngineProfile::defaultProfile(), &QWebEngineProfile::downloadRequested, this, &WebViewWidget::onDownloadRequested);
// 槽函数具体实现
void WebViewWidget::onDownloadRequested(QWebEngineDownloadItem * download)
{
QString strPath = QFileDialog::getSaveFileName(nullptr, "Save as", download->path());
if (strPath.isEmpty())
{
return;
}
download->setPath(strPath);
download->accept();
}
2、无法成功加载存在证书安全问题的https网页(在http网页上加载失败https格式的fileurl图片)
解决这个问题主要是需要让客户端直接忽略SSL证书校验这一过程,这是就需要集成QWebEnginePage这个类,重写其中的certificateError方法
// .h头文件
#include <QWebEnginePage>
class MyWebEnginePage : public QWebEnginePage
{
public:
MyWebEnginePage ();
virtual bool certificateError(const QWebEngineCertificateError &certificateError);
};
// cpp文件实现
#include "mywebenginepage.h"
MyWebEnginePage ::MyWebEnginePage ()
{
}
bool MyWebEnginePage ::certificateError(const QWebEngineCertificateError &certificateError)
{
return true;
}
随后在初始化QWebEngineView的时候,把这个自定义的WebEnginePage设置给View对象就好了。
webView = new QWebEngineView(this);
webView->setPage(new CustomWebEnginePage());
后续遇到相关问题会持续记录...