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

一、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;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值