QWebView или QWebEngineView

Начиная новый проект сегодня (ну не сегодня, а через неделю или две), что нужно использовать? QWebView или QWebEngineView?

Есть ли функциональные различия между этими двумя? Если я правильно понимаю, QWebView - это webkit, а QWebEngineView - мигает. Есть ли отличия от программиста? И самое главное, предлагает ли один больше настройки внешнего вида по сравнению с другим?

PS: если у кого-то есть ссылки на статьи, сравнивающие эти два, было бы желательно

3 ответа

Решение

Я бы попробовал QtWebEngine. Он заменяет QtWebKit по причине.

Если вы управляете отображаемым HTML-кодом, использование QWebKit, вероятно, не повредит. Просто убедитесь, что вы тестируете свои страницы заранее.

QWebView использует WebKit в качестве бэкэнда.

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

QWebEngineView использует Chromium в качестве бэкэнда.

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

WebKit - это то, что используется в Konqueror на Linux и Rekonq. Это неплохо, но, на мой взгляд, не так надежно для общих (и часто несовершенных) веб-страниц / html.

Хром - это гораздо более новый, быстрый и надежный двигатель.

Я не знаю всех технических деталей, но 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

Что касается меня, я не вижу некоторые очень важные функции в QWebEngineView. Прежде всего, вы не можете получить доступ ко всем фреймам на странице и не можете запустить JS во всех фреймах. Следующим является то, что вы не можете использовать QNetworkAccessManager для контрольного слоя подчеркивания. Так что на данный момент я не вижу каких-либо решений для некоторых проблем, таких как это Как отключить звук на flashplayer в моем приложении?, Я хочу верить, что это можно решить каким-то образом, потому что QWebEngineView работает намного быстрее и, похоже, у него нет (или меньше) проблем с утечкой памяти, чем у QWebView.

Framework: WebKit против WebEngine

Раньше Qt WebKit существовал с 2007 года до версии 3. Согласно этому блогу Qt и здесь он заменен новым веб-движком на основе Chromium, который является 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.

WebView с тем же именем был определен как в WebKit, так и в WebEngine. Документация для WebView в WebKit находится здесь. Должен иметь импорт QtWebKit 3.0.

Для использования WebView, привязанного к WebEngine, который упоминается в этой документации, нам нужно иметь такой импорт: import QtWebView 1.0. Но мы, скорее всего, столкнемся с ошибками № 5 и № 6, решение которых для отладки - состояния в ссылке.

Я буду использовать последний WebView, то есть тот, который предоставляется WebEngine. Доказательством того, что он связан с WebEngnie, является решение для отладки ошибок № 5 и № 6. Отныне WebView ссылается на тот, который предлагается WebEngine в этом документе.

Как говорится в этом блоге: В Qt 5.4 предоставляется Qt WebView, который предлагает более ограниченный API для встраивания веб-браузера, который является родным для базовой операционной системы, для случаев использования, когда полный Qt WebEngine не требуется или где он может ' не может использоваться из-за ограничений, исходящих от базовой ОС. В Qt 5.4 модуль Qt WebView поддерживает iOS и Android. Он поддерживает встраивание собственных веб-движков базовой операционной системы в Qt и в настоящее время доступен для Android и iOS. В связи с этим Qt WebView также предоставляет удобное облегченное решение для простой интеграции веб-документов.

WebEngineView позволяет приложениям QML отображать области динамического веб-содержимого. Компонент WebEngineView может совместно использовать экран с другими компонентами QML или охватывать весь экран, как указано в приложении QML. Это мой выбор в приложениях, которые не будут выполняться в iOS и Android.

Примечание. Согласно этому блогу, QtWebView будет по возможности использовать QtWebEngine. Тем временем, они делают больше платформ возможными с WebView. В качестве ответа на QT-Bug также упоминается, что: хотя у нас нет собственных реализаций WebView для OS X, Window и т. Д., Мы можем использовать QtWebEngine.

Мое решение: WebEngineView в приложениях, отличных от Android и iOS.

Другие вопросы по тегам