请选择 进入手机版 | 继续访问电脑版

PyQt社区|Qt开发-Python开发-PyQt开发-Pyside开发学习!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 257|回复: 0

Qt中QWebEngineView控件Cookie及缓存的常见问题

[复制链接]

55

主题

58

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2021-6-30 15:06:38 | 显示全部楼层 |阅读模式
一、QWebEngineView获取Cookie及缓存文件的默认存储路径
通过QWebEngineView实现基本的浏览网页界面程序,运行后QtWebEngine会在用户目录AppData\Local下生成缓存文件夹,该文件夹是隐藏的,需要设置文件夹隐藏可见才能具体看到。示例如下:
C:\Users\Administrator\AppData\Local\AppName\QtWebEngine\Default
其中,AppName是应用程序的名称,文件夹中包含了缓存文件,同时也包含了cookies信息,cookies保存在QtWebEngine\Default文件夹中。
二、QWebEngineView删除Cookie及缓存文件
  1. //删除缓存Cookie
  2. void WebViewHelper::clearCookie()
  3. {
  4.     QWebEngineProfile * engineProfile = _webView->page()->profile();
  5.     engineProfile->clearHttpCache();        // 清理缓存
  6.     engineProfile->clearAllVisitedLinks();  // 清理浏览记录
  7.     QWebEngineCookieStore* pCookie = _webView->page()->profile()->cookieStore();
  8.     pCookie->deleteAllCookies();            // 清理cookie
  9.     pCookie->deleteSessionCookies();        // 清理会话cookie
  10.     //this->deleteDir(engineProfile->persistentStoragePath());//删除会话和持久性Cookie文件夹
  11. }
  12. //删除文件夹
  13. bool WebViewHelper::deleteDir(const QString &path)
  14. {
  15.     if (path.isEmpty()){
  16.         return false;
  17.     }
  18.     QDir dir(path);
  19.     if(!dir.exists()){
  20.         return true;
  21.     }
  22.     dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤
  23.     QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息
  24.     foreach (QFileInfo file, fileList){ //遍历文件信息
  25.         if (file.isFile()){ // 是文件,删除
  26.             file.dir().remove(file.fileName());
  27.         }else{ // 递归删除
  28.             deleteDir(file.absoluteFilePath());
  29.         }
  30.     }
  31.     return dir.rmpath(dir.absolutePath()); // 删除文件夹
  32. }
复制代码
如果不想使用存储Cookie和缓存到本地文件,可以指定:
  1. engineProfile->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);//会话和持久性cookie都存储在内存中
  2. engineProfile->setHttpCacheType(QWebEngineProfile::NoCache);//禁用内存和磁盘缓存。
复制代码
三、QWebEngineView修改Cookie及缓存文件的存储路径
有关访问链接的信息与持久性cookie和其他持久性数据一起存储在由storageName()返回的存储中。持久性数据存储在通过调用setPersistentStoragePath()设置的子目录中,而高速缓存位于通过调用setCachePath()设置的子目录中。可以通过调用setHttpCacheType()将缓存类型设置为内存中或磁盘上。如果仅设置了存储名称,则会自动创建并命名子目录。如果您手动设置任何值,则应在创建属于配置文件的任何页面之前进行设置。
  1. //指定缓存Cookie的路径
  2. void WebViewHelper::setCachePath(const QString &path)
  3. {
  4.     if(!path.isEmpty())
  5.     {
  6.         QWebEngineProfile * engineProfile = _webView->page()->profile();
  7.         engineProfile->setCachePath(path);//指定高速缓存路径
  8.         engineProfile->setPersistentStoragePath(path);//指定会话和持久性Cookie路径
  9.         engineProfile->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies);//会话和持久性Cookie均保存到磁盘或从磁盘还原
  10.         engineProfile->setHttpCacheType(QWebEngineProfile::DiskHttpCache);//使用磁盘缓存。
  11.     }
  12. }
复制代码
以上代码中_webView是QWebEngineView的对象。
  1. QWebEngineView *_webView;
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|PyQt社区 |网站地图

GMT+8, 2021-9-23 07:24 , Processed in 0.072610 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表