我正在创建名为“webengine”的简易QT应用程序
pWebView = new QWebEngineView(this);
pWebView->load(QUrl("http://technoz.ru"));
pWebView->show();
// On application close
delete pWebView;
应用程序为存储和cookie创建名为“webengine”的标准文件夹。域设置cookie为24小时。但在关闭并再次打开应用程序后,cookie丢失了。 Сookies文件在“webengine”文件夹中创建 - 为空(我在sqlbrowser中检查它)。但是,如果您按住第30 - 40秒,则会保存Cookie。
为什么不立即保存cookie,以及如何立即保存?
在测试过程中,结果表明,如果经过的时间较少,QT(铬)会在30秒内(通常)通过浏览器自动存储cookie,不会保存cookie。可以改变这个时间吗?我试图使用标志 - --profiling-flush = 5,但它没有帮助。
鉴于浏览器必须在关闭浏览器时保留存储(cookie),但它没有,是否是QT的错误?
我可以从源码构建QT,并在源代码中查找和更改此设置,我想,但是,也许这个问题有其他解决方案...
谢谢大家,发现它包包: https://bugreports.qt.io/browse/QTBUG-52121
答案 0 :(得分:2)
您必须编辑QWebEngineProfile的cookie存储策略。如果您使用的是默认配置文件,请使用:
QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies)
会话和持久性cookie都保存到磁盘并从磁盘恢复。您可以选择保存cookie和缓存数据的文件夹:
QWebEngineProfile* defaultProfile = QWebEngineProfile::defaultProfile();
defaultProfile->setCachePath("your folder");
defaultProfile->setPersistentStoragePath("your folder");