Ai
1 Star 2 Fork 142

Qt(开源集合)/DS

forked from Vanishi/DS 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
RunWebEngineView.cpp 2.43 KB
一键复制 编辑 原始数据 按行查看 历史
sun-th 提交于 2023-04-16 11:06 +08:00 . 内容可能含有违规信息
#include "RunWebEngineView.h"
#include "RunWebEngineViewManager.h"
#include "RunWebEnginePage.h"
#include <QTimer>
#include <QsLog.h>
RunWebEngineView::RunWebEngineView(RunWebEngineViewManager *webViewManager,QWidget *parent) : QWebEngineView(parent),
mWebViewManager(webViewManager){
QLOG_INFO()<<"RunWebEngineView::RunWebEngineView()";
delete page();
RunWebEnginePage *newPage = new RunWebEnginePage(mWebViewManager->profile(),this);
this->setPage(newPage);
QTimer *timer = new QTimer(this);
connect(timer,&QTimer::timeout,this,[this,timer](){
QLOG_INFO()<<"RunWebEngineView::timeout 10s";
timer->stop();
this->reload();
});
connect(this, &QWebEngineView::loadStarted, this,[this,timer](){
QLOG_INFO()<<"RunWebEngineView::loadStarted.......";
mInjectCheckCount = 0;
mWebViewManager->pageIsFinished = false;
timer->start(10000);
});
connect(this, &QWebEngineView::loadFinished,this,[this,timer](bool){
QLOG_INFO()<<"RunWebEngineView::loadFinished.......";
timer->stop();
injectJavascriptCheck();
});
connect(this, &QWebEngineView::urlChanged, this,[this](const QUrl &url){
if(url.url()!=""){
emit mWebViewManager->webViewNotifyUrlChanged(url.url());
}
});
}
RunWebEngineView::~RunWebEngineView(){
QLOG_INFO()<<"RunWebEngineView::~RunWebEngineView()";
delete page();
}
void RunWebEngineView::injectJavascriptCheck(){
if(mInjectCheckCount>20){
// 注入检测超过指定次数,可能该网页已不能访问,标记加载完整
mWebViewManager->pageIsFinished = true;
}else {
page()->runJavaScript("injectJavascriptCheck()", [this](const QVariant &v) {
if(v.toString()=="success"){
mWebViewManager->pageIsFinished = true;
}else {
QLOG_INFO()<<"RunWebEngineView::injectJavascriptCheck mInjectCheckCount="<<mInjectCheckCount;
mInjectCheckCount +=1;
QTimer::singleShot(mInjectCheckCount*50,this,[this](){
injectJavascriptCheck();
});
}
});
}
}
QWebEngineView *RunWebEngineView::createWindow(QWebEnginePage::WebWindowType type){
QLOG_INFO()<<"RunWebEngineView::createWindow"<<type<<page()<<this->url().url();
if(type == QWebEnginePage::WebBrowserTab){
return mWebViewManager->createWebView();
}
return this;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/qt-open-source-collection/DS.git
git@gitee.com:qt-open-source-collection/DS.git
qt-open-source-collection
DS
DS
master

搜索帮助