一、pro文件中需要添加模块
二、程序打包
除了使用windeployqt.exe打包依赖库以外,还需要手动添加两项文件。
第一步:在你程序bin目录下的translations文件中添加文件夹qtwebengine_locales,并在里面粘贴QT 自带的qtwebengine_locales。
QT 自带的在如下目录,将这些文件全部粘贴到你添加的那个文件夹中
第二步:bin目录下添加文件夹resources,并放入5个文件
5个文件在如下目录
三、设置过滤器,拦截请求
使用场景:扫码登录
扫码登录时,如果扫码成功,服务器会回调,返回一个成功登录的URL,URL中含token,就可以验证是否扫码,这样我们就可以直接通过设置过滤器来拦截到这个回调URL
添加过滤器代码
class WebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{
Q_OBJECT
public:
WebUrlRequestInterceptor(QObject *p = Q_NULLPTR);
void interceptRequest(QWebEngineUrlRequestInfo &info);
signals:
void loginFinished();
};
WebUrlRequestInterceptor::WebUrlRequestInterceptor(QObject *p)
:QWebEngineUrlRequestInterceptor(p)
{
}
void WebUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) {
QString rsrct = "";
switch(info.resourceType()){
case 0:rsrct="ResourceTypeMainFrame = 0, // top level page";break;
case 1:
{
rsrct="ResourceTypeSubFrame, // frame or iframe";
QString url = info.requestUrl().url();
if (url.contains("https://www.4399.com/api/login?token=")) {
qDebug()<<"登录成功"<<url;
emit loginFinished();
}
break;
}
case 2:rsrct="ResourceTypeStylesheet, // a CSS stylesheet";break;
case 3:rsrct="ResourceTypeScript, // an external script";break;
case 4:rsrct="ResourceTypeImage, // an image (jpg/gif/png/etc)";break;
case 5:rsrct="ResourceTypeFontResource, // a font";break;
case 6:rsrct="ResourceTypeSubResource, // an other subresource.";break;
case 7:rsrct="ResourceTypeObject, // an object (or embed) tag for a plugin,";break;
case 8:rsrct="ResourceTypeMedia, // a media resource.";break;
case 9:rsrct="ResourceTypeWorker, // the main resource of a dedicated worker.";break;
case 10:rsrct="ResourceTypeSharedWorker, // the main resource of a shared worker.";break;
case 11:rsrct="ResourceTypePrefetch, // an explicitly requested prefetch";break;
case 12:rsrct="ResourceTypeFavicon, // a favicon";break;
case 13:rsrct="ResourceTypeXhr, // a XMLHttpRequest";break;
case 14:rsrct="ResourceTypePing, // a ping request for <a ping>";break;
case 15:rsrct="ResourceTypeServiceWorker, // the main resource of a service worker.";break;
case 16:rsrct="ResourceTypeUnknown";break;
default : rsrct="未知类型";break;
}
qDebug()<<"\t"<<Q_FUNC_INFO<<":\n\t\t" << "WebUrlRequestInterceptor::interceptRequest " <<info.requestMethod()
<<"\r\n "<<info.requestUrl()<<" "<<rsrct <<"\r\n";
}
WebUrlRequestInterceptor *ceptor = new WebUrlRequestInterceptor();
profile()->setRequestInterceptor(ceptor);
connect(ceptor, &WebUrlRequestInterceptor::loginFinished,
this, &WebViewForm::loginFinished);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)