Простой пример WebKit2 с Qt - PullRequest
       0

Простой пример WebKit2 с Qt

0 голосов
/ 12 марта 2019

Я пытаюсь создать очень простой фиктивный веб-просмотр с Qt и WebKit для просмотра страниц, чтобы я мог лучше понять модель процесса разделения WebKit2.

Существующие примеры / вопросы (например, Пример кода для простого браузера веб-страниц, использующего WebKit QT в C ++ ), похоже, используют «старый» стиль WebKit, в котором рендеринг и отображение выполняются в одном процессе. Что эквивалентно этому примеру, но сделано для WebKit2?

Неужели так сложно с WebKit2, что нет каких-либо базовых примеров?

1 Ответ

0 голосов
/ 12 марта 2019

Qt WebKit2 доступен только для QML.

В Qt 5 и Webkit2 API-интерфейсы для QtWebKit и Web View значительно меняются.Это потому, что с WebKit2, WebKit и приложение работают в разных процессах.Старый виджет QWebView будет поддерживаться только в Qt для настольных компьютеров и не будет использовать новый WebKit2.Платформы мобильных телефонов обычно не имеют установленного модуля QWidgets в Qt 5.

Примеры, использующие QtWebKit QML API, использующий архитектуру разделенного процесса WebKit2, можно найти в документации Qt WebKit Существует Flickr View и YouTube View examples

Qt также имеет WebView модуль с примерами типа Minibrowser

И Модуль WebEngine .Примеры можно найти здесь

А вот самый простой пример WebKit2, который просто показывает веб-страницу Google

  • Использование Qt 5.5.1 длязапустите этот пример.
  • Добавьте следующее к вашему .pro файлу: QT += quick qml webkit

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())return -1;

    return app.exec();
}

main.qml

import QtQuick 2.0
import QtQuick.Window 2.0
import QtWebKit 3.0

Window {
    visible: true
    width: 967
    height: 480

    WebView {
        id: webView
        anchors.fill: parent
        opacity: 0

        url: "https://google.com"

        Behavior on opacity 
        {
            NumberAnimation { duration: 200 }
        }

        onLoadingChanged: 
        {
            switch (loadRequest.status)
            {
            case WebView.LoadSucceededStatus:
                opacity = 1
                break
            default:
                opacity = 0
                break
            }
        }

        onNavigationRequested: 
        {
            request.action = WebView.AcceptRequest
        }
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...