Существуют ли функциональные различия между QWebView и QWebEngineView? Если я правильно понимаю, QWebView — это webkit, а QWebEngineView — blink. Есть ли отличия от программатора? Предлагает ли один больше настроек внешнего вида по сравнению с другим?
QWebView или QWebEngineView
Ответы (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, взгляните на этот проект и попробуйте разные страницы:
https://github.com/magist3r/QtWeb
Вот еще немного информации о QtWebEngine v QtWebKit
http://en.wikipedia.org/wiki/WebKit
Что касается меня, то я не вижу некоторых очень важных функций в QWebEngineView. Во-первых, вы не можете получить доступ ко всем фреймам на странице и не можете запускать JS во всех фреймах. Следующим является то, что вы не можете использовать QNetworkAccessManager для слоя подчеркивания представления управления. Так что пока я не вижу никаких решений для некоторых проблем, таких как этот Как отключить звук во флешплеере в моем пользовательском приложении? . Я хочу верить, что это можно каким-то образом решить, потому что QWebEngineView работает намного быстрее и кажется, что у него нет (или меньше) проблем с утечкой памяти, чем у QWebView.
Фреймворк: 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.