QWebView或QWebEngineView

时间:2015-03-14 23:28:26

标签: qt qt5 qtwebkit qt5.4 qtwebengine

今天开始新项目(好吧,不是今天,而是一两个星期),应该使用什么? QWebView或QWebEngineView?

这两者之间是否存在功能差异?如果我理解正确,QWebView是webkit,而QWebEngineView是闪烁的。程序员有什么不同吗?最重要的是,是否提供了更多的外观和感觉定制?

PS:如果有人链接到比较这两者的文章,我们将不胜感激

3 个答案:

答案 0 :(得分:21)

我会试试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是Konqueror在Linux和Rekonq上使用的。它不错,但在我看来,它在一般(通常不完美)的网页/ HTML中并不那么强大。

Chromium是一种更新,更快,更强大的引擎。

我并不是特别了解所有技术细节,但QWebEngine是朝着正确方向迈出的一大步。我发现这主要来自我自己的实验和经验用法。

要给WebKit一个不错的尝试,请查看此项目并尝试各种页面:

http://qtweb.net/

https://github.com/magist3r/QtWeb

以下是有关QtWebEngine v QtWebKit

的更多信息

http://wiki.qt.io/QtWebEngine

http://en.wikipedia.org/wiki/WebKit

http://wiki.qt.io/QtWebKit

答案 1 :(得分:5)

至于我,我无法在QWebEngineView中看到一些非常重要的功能。首先,您无法访问页面上的所有帧,并且无法在所有帧中运行JS。下一个是你不能使用QNetworkAccessManager来控制视图下划线层。所以现在我无法看到任何问题的解决方案,例如How to disable sound on flashplayer in my custom application?。我想相信它有可能以某种方式解决它,因为QWebEngineView工作得更快,看起来它没有(或更少)内存泄漏问题,然后QWebView。

答案 2 :(得分:3)

框架: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,我们需要进行以下导入:import 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。