QWebView или QWebEngineView

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


person graywolf    schedule 14.03.2015    source источник
comment
Ответ на самом деле зависит от того, заботитесь ли вы о прямой совместимости или нет — в какой-то момент в будущем Qt прекратит поддержку WebKit.   -  person MrEricSir    schedule 15.03.2015
comment
Есть ли для этого временные рамки? Вроде 5.5 или это еще уточнять?   -  person graywolf    schedule 15.03.2015
comment
Согласно объявлению о выпуске Qt 5.4, поддержка WebKit будет объявлена ​​устаревшей в версии 5.5, а новые функции добавлены не будут. На самом деле маловероятно, что они полностью удалят его до Qt 6, потому что это (очевидно) нарушит двоичную совместимость.   -  person MrEricSir    schedule 15.03.2015
comment
Мне кажется, что QWebView — единственный вариант для iOS или Android, а QWebEngineView доступен только на десктопах. Это правильно?   -  person davidkomer    schedule 31.05.2016
comment
Я голосую за открытие, поскольку между ними есть заметные различия, и, таким образом, список различий не будет базой для мнений, но все же очень полезен.   -  person Adrian Maire    schedule 20.08.2019


Ответы (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 используется в 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

person phyatt    schedule 15.03.2015
comment
QtWebKit устарел в Qt 5.5: wiki.qt.io/New- Функции в Qt-5.5#Deprecated_Functionality - person Vincas Dargis; 26.03.2015

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

person Ivan Borshchov    schedule 23.04.2015
comment
это хороший момент ... но поскольку qtwebkit будет устаревшим, я не вижу других вариантов здесь: / если я найду решение, я дам вам знать - person graywolf; 24.04.2015

Фреймворк: 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 также упоминается, что: хотя у нас нет собственных реализаций WebView для OS X, Window и т. д., мы можем использовать QtWebEngine.

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

person Siamak Rahimi    schedule 03.09.2015