ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-09-27 15:02:34  阅读:1331  来源: 互联网

标签:文件夹 控件 常见问题 Qt 缓存 Cookie engineProfile path dir


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

标签:文件夹,控件,常见问题,Qt,缓存,Cookie,engineProfile,path,dir
来源: https://blog.csdn.net/xuefu2008/article/details/120508532

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有