使用 QWebEngineView 时如何防止创建奇怪的文件夹?

Posted

技术标签:

【中文标题】使用 QWebEngineView 时如何防止创建奇怪的文件夹?【英文标题】:How to prevent creating strange folders while using QWebEngineView? 【发布时间】:2016-06-12 13:39:34 【问题描述】:

我需要在我的应用程序中显示一些动态 Web 内容(让它成为应用程序帮助材料)。

我在那里使用带有QWebView 的Qt5.4。但是在切换到 Qt5.6 之后,我注意到 QWebKit 已弃用且不再受支持。 因此,我决定将QWebKit 功能替换为来自 QWebEngine。将QWebView 替换为QWebEngineView 后 我调查了启动我的应用程序后在用户文件夹中创建了一些空文件夹。例如:.QtWebEngineProcess 文件夹和像我的应用程序一样以点开头的文件夹。

正常吗?如何防止创建此类文件夹?有任何选项可以禁用此类行为吗?

【问题讨论】:

【参考方案1】:

QWebEngine 需要此文件夹来存储一些临时文件:如 cookie、缓存数据...有关详细信息,请参阅 QWebEngineProfile (http://doc.qt.io/qt-5/qwebengineprofile.html#PersistentCookiesPolicy-enum)。您可以在某个地方选择默认文件夹:

QWebEngineProfile* defaultProfile = QWebEngineProfile::defaultProfile();
defaultProfile->setCachePath("your folder");
defaultProfile->setPersistentStoragePath("your folder");

或者您可以通过更改 cookie 政策来禁用它:

QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);

还有一件事,QWebEngine 需要一些文件夹,其中包含翻译文件、资源……应该与您的 exe 文件一起附加才能正常工作。您可以在 exe 文件夹中的 Qt 终端(Windows 中的示例)中执行:

windeployqt .

Qt 会复制所有你需要的文件。详情请见http://doc.qt.io/qt-5/windows-deployment.html =)

【讨论】:

我的应用程序不需要存储任何 cookie 和数据缓存。所以我不希望用户目录中有任何过多的文件夹。 所以只要禁用cookies存储:QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies); 谢谢!我做到了。我还从用户目录中删除了所有不必要的文件夹。但是 .QtWebEngineProcess 文件夹在我的应用程序启动后仍然出现在用户文件夹中。

以上是关于使用 QWebEngineView 时如何防止创建奇怪的文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 QWebEngineView 打印

使用QWebEngineView显示html时如何获取verticalScrollBar的最大值和当前值

QWebEngineView:静音散景图例时“无法读取未定义的属性‘pageX’”

QWebEngineView 在访问特定网站时崩溃

如何在使用 QWebEngineView 'loadFinished' 加载页面后立即更改 html 元素?

如何正确的使用QWebEngineView