qt qt5 qtwebkit qt5.4 qtwebengine

qt - QWebView o QWebEngineView



qt5 qtwebkit (3)

Comenzando un nuevo proyecto hoy (bueno, no hoy, pero en una o dos semanas), ¿qué se debe usar? QWebView o QWebEngineView?

¿Hay diferencias funcionales entre esos dos? Si entiendo correctamente, QWebView es webkit, mientras que QWebEngineView está parpadeando. ¿Hay alguna diferencia con el programador? Y lo más importante, ¿ofrece uno una mayor personalización de la apariencia sobre el otro?

PD: si alguien tiene enlaces a artículos que comparen esos dos, se agradecería


En cuanto a mí, no puedo ver algunas características muy importantes en QWebEngineView. En primer lugar, no puede acceder a todos los marcos en la página y no puede ejecutar JS en todos los marcos. La siguiente es que no puede usar QNetworkAccessManager para la capa de subrayado de la vista de control. Por ahora, no puedo ver ninguna solución para algunos problemas, como este. ¿Cómo deshabilitar el sonido en flashplayer en mi aplicación personalizada? . Quiero creer que es posible resolverlo de alguna manera, ya que QWebEngineView funciona mucho más rápido y parece que no tiene (o menos) problemas de pérdida de memoria que QWebView.


Framework: WebKit vs WebEngine

Solía ​​haber Qt WebKit desde 2007 hasta la versión 3. De acuerdo con este blog de Qt y aquí, se reemplaza por un nuevo motor web basado en Chromium, que es Qt WebEngine. De acuerdo con el enlace, Qt WebKit funciona bien en este momento, y continuará haciéndolo en los próximos años, pero si desea tener todas las funciones HTML5 más recientes y mejores disponibles para su aplicación o dispositivo, debería considerar mudarse a Qt WebEngine .

Como dice este blog: Qt 5.4 también contiene el módulo más antiguo de Qt WebKit. Qt WebKit aún es compatible, pero a partir de Qt 5.4 consideramos que está hecho, por lo que no se le agregará ninguna nueva funcionalidad. También estamos planeando dejar de usar Qt WebKit en futuras versiones, ya que el nuevo Qt WebEngine proporciona lo que se necesita. En

Mi decisión: prefiero ir con el último QtWebEngine especialmente cuando estoy en la etapa inicial. Si golpeo la pared, entonces tal vez vuelvo al Qt WebKit. QML: WebView vs WebEngineView.

Para tener un elemento de navegador en QML hay dos elementos: WebView y WebEngineView.

WebView con el mismo nombre se ha definido tanto en WebKit como en WebEngine. La documentación para WebView en WebKit está aquí. Debe tener la importación QtWebKit 3.0.

Para utilizar el WebView enlazado a WebEngine que se menciona en esta documentación, necesitamos tener esta importación: importar QtWebView 1.0. Pero es muy probable que enfrentemos un error # 5 y # 6 que las soluciones para depurar se encuentran en el enlace.

Usaré el último WebView, es decir, el que proporciona WebEngine. La prueba de que está relacionado con WebEngnie es la solución de depuración para los errores # 5 y # 6. A partir de ahora, WebView hace referencia a la que ofrece WebEngine en este documento.

Como dice este blog: En Qt 5.4, se proporciona Qt WebView, que ofrece una API más limitada para incrustar el navegador web que es nativo del sistema operativo subyacente para casos de uso en los que no se necesita el Qt WebEngine completo, o donde puede '' t ser utilizado debido a las restricciones procedentes del sistema operativo subyacente. En Qt 5.4, el módulo Qt WebView es compatible con iOS y Android. Admite la incorporación de los motores web nativos del sistema operativo subyacente en Qt, y actualmente está disponible para Android e iOS. Debido a esto, Qt WebView también ofrece una solución cómoda y liviana para la integración sencilla de documentos web.

WebEngineView permite que las aplicaciones QML rindan regiones de contenido web dinámico. Un componente WebEngineView puede compartir la pantalla con otros componentes QML o abarcar la pantalla completa como se especifica dentro de la aplicación QML. Es mi elección en aplicaciones que no se ejecutarán en iOS y Android.

Nota: Según este blog, QtWebView volverá a usar QtWebEngine cuando sea posible. Mientras tanto, están haciendo más posibles las plataformas con WebView. También se menciona como respuesta a un QT-Bug que: aunque no tenemos implementaciones nativas de WebView para OS X, Windows, etc., podemos recurrir al uso de QtWebEngine

Mi decisión: WebEngineView en aplicaciones que no sean Android ni iOS.


Le daría una oportunidad a QtWebEngine. Está reemplazando QtWebKit por una razón.

Si controlas el HTML que se está renderizando, entonces probablemente no esté mal usar QWebKit. Solo asegúrate de probar tus páginas de antemano.

QWebView utiliza WebKit como backend.

http://doc.qt.io/qt-5/qwebview.html#details

QWebEngineView utiliza Chromium como backend.

http://doc.qt.io/qt-5/qwebengineview.html#details

WebKit es lo que se usa en Konqueror en Linux y Rekonq. No está mal, pero en mi opinión no es tan robusto en las páginas web / html generales (ya menudo imperfectas).

Chromium es un motor mucho más nuevo, más rápido y más robusto.

No conozco todos los detalles técnicos específicamente, pero QWebEngine es un gran paso en la dirección correcta. He encontrado esto principalmente de mi propia experimentación y uso empírico.

Para darle a WebKit un intento decente, mira este proyecto y prueba una variedad de páginas:

http://qtweb.net/

https://github.com/magist3r/QtWeb

Aquí hay más información acerca de QtWebEngine v QtWebKit

http://wiki.qt.io/QtWebEngine

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

http://wiki.qt.io/QtWebKit