QWebView или QWebEngineView [закрыто]
запуск нового проекта сегодня (ну, не сегодня, а через неделю или две), что нужно использовать? QWebView или QWebEngineView?
есть функциональное различия между этими двумя? Если я правильно понимаю, QWebView-это webkit, а QWebEngineView-blink. Есть ли какие-то отличия от программиста? И самое главное, предлагает ли один больше настроек look&feel над другим?
PS: Если у кого-то есть ссылки на статьи, сравнивающие эти два, это было бы оценено
3 ответов
Я бы дал QtWebEngine попробовать. Это замена QtWebKit по причине.
Если вы контролируете HTML, который отображается, то, вероятно, не помешает использовать QWebKit. Просто убедитесь, что вы заранее протестировали свои страницы.
QWebView использует WebKit в качестве бэкэнда.
http://doc.qt.io/qt-5/qwebview.html#details
QWebEngineView использует хром в качестве базовая программа.
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
Что касается меня, я не вижу некоторых очень важных функций в QWebEngineView. Прежде всего, вы не можете получить доступ ко всем кадрам на странице, и вы не можете запускать JS во всех кадрах. Следующий - вы не можете использовать QNetworkAccessManager для слоя подчеркивания вида элемента управления. Так что пока я не вижу никаких решений для некоторых проблем, таких как это Как отключить звук на flashplayer в моем пользовательском приложении? . Я хочу верить, что это можно каким-то образом решить, потому что qwebengineview работает гораздо быстрее и кажется, что у него нет (или меньше) проблем с утечкой памяти, чем QWebView.
Framework: WebKit vs WebEngine
с 2007 года до версии 3 использовался Qt WebKit. Согласно этому блогу Qt и здесь он заменен новым веб-движком на основе хрома, который является Qt WebEngine. Согласно ссылке Qt WebKit отлично работает прямо сейчас и будет продолжать делать это в ближайшие годы, но если вы хотите иметь все последние и самые большие возможности HTML5, доступные для вашего приложения или устройства, вы должны рассмотреть возможность перехода на Qt WebEngine.
As в этом блоге говорится: 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, который упоминается в этой документации, нам нужно иметь этот импорт: импорт QtWebView 1.0. Но мы, скорее всего, столкнемся с ошибкой #5 и #6, которая решения для отладки-это состояния в ссылке.
Я буду использовать последний WebView i.e тот, который предоставляется 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.