QWebView ou QWebEngineView [fermé]

Commencer un nouveau projet aujourd'hui (pas aujourd'hui, mais dans une semaine ou deux), que devrait-on utiliser? QWebView ou QWebEngineView?

y fonctionnel les différences entre ces deux? Si je comprends bien, QWebView est webkit, tandis que QWebEngineView est blink. Existe-il des différences pour le programmeur? Et le plus important, est-ce que l'un offre plus de personnalisation de l'apparence plutôt que l'autre?

PS: si quelqu'un a des liens vers des articles comparant ces deux-là, il serait appréciée

19
demandé sur Prasad Silva 2015-03-15 02:28:25

3 réponses

je voudrais donner QtWebEngine un essai. Il remplace QtWebKit pour une raison.

si vous contrôlez le HTML qui est rendu, alors il n'y a probablement pas de mal à utiliser QWebKit. Assurez-vous de tester vos pages à l'avance.

QWebView utilise WebKit comme backend.

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

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

WebKit est ce qui est utilisé dans Konqueror sous Linux et Rekonq. Ce n'est pas mauvais, mais ce n'est pas aussi robuste à travers les pages web générales (et souvent imparfait)/html à mon avis.

Chrome est beaucoup plus récent, plus rapide et plus robuste moteur.

je ne connais pas tous les détails techniques, mais QWebEngine est un grand pas dans la bonne direction. Je l'ai trouvé principalement de mon propre expérimentation et empirique de l'utilisation.

pour donner à WebKit un essai décent, regardez ce projet et essayez une variété de pages:

http://qtweb.net/

https://github.com/magist3r/QtWeb

voici plus d'informations à propos de QtWebEngine v QtWebKit

http://wiki.qt.io/QtWebEngine

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

http://wiki.qt.io/QtWebKit

17
répondu phyatt 2015-03-15 02:46:47

quant à moi, Je ne vois pas de fonctionnalités très importantes dans QWebEngineView. Tout d'abord, vous ne pouvez pas accéder à tous les cadres sur la page, et vous ne pouvez pas exécuter JS dans tous les cadres. La prochaine est que vous ne pouvez pas utiliser QNetworkAccessManager pour la couche de soulignement de vue de contrôle. Pour l'instant, je ne vois pas de solutions à certains problèmes, comme celui-ci Comment désactiver le son sur flashplayer dans mon application personnalisée? . Je veux croire qu'il est possible de le résoudre d'une manière ou d'une autre, parce qwebengineview travaille beaucoup plus rapide et semble avoir aucun (ou moins) problème de fuite de mémoire alors QWebView.

5
répondu user3479125 2017-05-23 12:33:18

Framework: WebKit vs WebEngine

il y avait Qt WebKit depuis 2007 jusqu'à la version 3. Selon ce Qt blog et ici, il est remplacé par un nouveau moteur Web à base de Chrome qui est Qt WebEngine. Selon le lien Qt WebKit fonctionne très bien en ce moment, et continuera à le faire dans les années à venir, mais si vous voulez avoir toutes les dernières et plus grandes fonctionnalités HTML5 disponibles pour votre application ou appareil, vous devriez envisager de passer à Qt WebEngine.

Comme ce blog dit: Qt 5.4 contient aussi toujours L'ancien module Qt WebKit. Qt WebKit est toujours supporté, mais à partir de Qt 5.4 nous considérons qu'il est fait, donc aucune nouvelle fonctionnalité ne sera ajoutée. Nous prévoyons également de déprécier Qt WebKit dans les prochaines versions, car le nouveau WebEngine Qt fournit ce dont nous avons besoin.

ma décision: je préfère utiliser le dernier QtWebEngine surtout quand je suis au stade initial. Si je frappe le mur alors peut-être que je retourne sur le Qt WebKit. QML: WebView vs WebEngineView.

pour avoir un élément de navigateur dans QML il y a deux éléments WebView et WebEngineView.

WebView avec le même nom a été défini dans WebKit et WebEngine. La Documentation pour WebView dans WebKit est ici. Il devrait avoir l'import QtWebKit 3.0.

pour utiliser le WebView lié à WebEngine qui est mentionné dans cette documentation, Nous avons besoin de cette importation: importer QtWebView 1.0. Mais nous allons très probablement faire face à une erreur #5 et #6 qui les solutions pour déboguer sont les états dans le lien.

je vais utiliser la dernière WebView je.e celui qui est fourni par WebEngine. La preuve qu'il est lié à WebEngnie est la solution de débogage à l'erreur #5 et #6. Désormais, WebView se réfère à celui offert par WebEngine dans ce document.

comme le dit ce blog: dans Qt 5.4, Qt WebView est fourni qui offre une API plus limitée pour intégrer le navigateur Web qui est natif du système d'exploitation sous-jacent pour les cas d'utilisation où le WebEngine Qt complet n'est pas nécessaire, ou lorsqu'il ne peut pas être utilisé en raison de restrictions provenant de L'OS sous-jacent. Dans Qt 5.4, le module WebView de Qt prend en charge iOS et Android. Il prend en charge l'intégration des moteurs web natifs du système d'exploitation sous-jacent dans Qt, et est actuellement disponible pour Android et iOS. Pour cette raison, Qt WebView offre également une solution légère et pratique pour une intégration simple des documents web.

WebEngineView permet aux applications QML de rendre les régions de contenu web dynamique. Un composant WebEngineView peut partager l'écran avec d'autres composants QML ou englober l'écran complet tel que spécifié dans L'application QML.Il est mon choix dans les applications qui ne vont pas être exécutés dans iOS et Android.

Note: C'est D'après ce blog QtWebView va revenir à l'utilisation de QtWebEngine si possible. En attendant, ils rendent plus de plateformes possibles avec WebView. Il est également mentionné en réponse à un bogue QT que: nous n'avons pas d'implémentations WebView natives pour L'OS X, la fenêtre, etc. nous pouvons nous rabattre pour utiliser QtWebEngine

ma décision: WebEngineView dans les applications Non Android et iOS.

3
répondu Siamak Rahimi 2015-09-03 13:27:21