QWebView 和 QWebEngineView 在功能上有什么区别吗?如果我理解正确,QWebView 是 webkit,而 QWebEngineView 是闪烁。程序员有什么不同吗?一个提供比另一个更多的外观和感觉定制吗?
3 回答
我会试试 QtWebEngine。它正在取代 QtWebKit 是有原因的。
如果您控制正在呈现的 HTML,那么使用 QWebKit 可能没有什么坏处。只要确保你事先测试你的页面。
QWebView 使用 WebKit 作为后端。
http://doc.qt.io/qt-5/qwebview.html#details
QWebEngineView 使用 Chromium 作为后端。
http://doc.qt.io/qt-5/qwebengineview.html#details
WebKit 是在 Linux 和 Rekonq 上的 Konqueror 中使用的。它还不错,但在我看来,它在一般(而且通常是不完美的)网页/html中并不那么健壮。
Chromium 是一种更新、更快、更强大的引擎。
我不具体了解所有技术细节,但 QWebEngine 是朝着正确方向迈出的一大步。我发现这主要来自我自己的实验和经验使用。
为了给 WebKit 一个体面的尝试,看看这个项目并尝试各种页面:
https://github.com/magist3r/QtWeb
这是有关 QtWebEngine v QtWebKit 的更多信息
至于我,我在 QWebEngineView 中看不到一些非常重要的功能。首先你不能访问页面上的所有框架,也不能在所有框架中运行JS。下一个是您不能将 QNetworkAccessManager 用于控制视图下划线层。所以现在我看不到某些问题的任何解决方案,比如如何在我的自定义应用程序中禁用 flashplayer 上的声音?. 我想相信有可能以某种方式解决它,因为 QWebEngineView 工作得更快,并且看起来它没有(或更少)内存泄漏问题然后 QWebView。
框架:WebKit 与 WebEngine
自 2007 年以来一直存在 Qt WebKit 直到第 3 版。根据这个 Qt 博客和这里它被新的基于 Chromium 的 Web 引擎取代,即 Qt WebEngine。根据链接 Qt WebKit 现在可以正常工作,并且在未来几年将继续这样做,但是如果您想为您的应用程序或设备提供所有最新和最强大的 HTML5 功能,您应该考虑转移到 Qt WebEngine .
正如这篇博客所说:Qt 5.4 还包含旧的 Qt WebKit 模块。Qt WebKit 仍受支持,但从 Qt 5.4 开始,我们认为它已完成,因此不会向其中添加新功能。我们还计划在未来的版本中弃用 Qt WebKit,因为新的 Qt WebEngine 提供了所需的功能。在
我的决定:我更喜欢在初始阶段使用最新的 QtWebEngine。如果我碰壁了,那么也许我会恢复使用 Qt WebKit。QML:WebView 与 WebEngineView。
对于 QML 中的浏览器项目,有两个项目 WebView 和 WebEngineView。
WebKit 和 WebEngine 中都定义了同名的 WebView。WebKit 中的 WebView 文档在这里。它应该有导入 QtWebKit 3.0。
为了使用本文档中提到的绑定到 WebEngine 的 WebView,我们需要进行此导入:导入 QtWebView 1.0。但是我们很可能会遇到错误 #5 和 #6,调试的解决方案是链接中的状态。
我将使用后一种 WebView,即由 WebEngine 提供的 WebView。它与 WebEngnie 相关的证据是错误 #5 和 #6 的调试解决方案。从现在开始,WebView 指的是本文档中 WebEngine 提供的。
正如这个博客所说:在 Qt 5.4 中,提供了 Qt WebView,它提供了一个更有限的 API 来嵌入底层操作系统的原生 Web 浏览器,用于不需要完整 Qt WebEngine 或它可以的用例。由于来自底层操作系统的限制,不能使用。在 Qt 5.4 中,Qt WebView 模块支持 iOS 和 Android。它支持将底层操作系统的原生 Web 引擎嵌入到 Qt 中,目前可用于 Android 和 iOS。正因为如此,Qt WebView 也为简单的 Web 文档集成提供了一个方便的轻量级解决方案。
WebEngineView 允许 QML 应用程序呈现动态 Web 内容的区域。WebEngineView 组件可以与其他 QML 组件共享屏幕或包含 QML 应用程序中指定的全屏。这是我在不会在 iOS 和 Android 中执行的应用程序中的选择。
注意:根据此博客,QtWebView 将尽可能使用 QtWebEngine。与此同时,他们通过 WebView 使更多平台成为可能。作为对 QT-Bug 的回复,它还提到:虽然我们没有 OS X、Window 等的原生 WebView 实现,但我们可以回退到使用 QtWebEngine
我的决定:非 Android 和 iOS 应用程序中的 WebEngineView。