Qt的简单WebKit2示例

问题描述 投票:0回答:1

我正在尝试使用Qt和WebKit构建一个超级简单的虚拟Web视图来查看页面,以便我可以更好地理解WebKit2拆分过程模型。

现有的例子/问题(如Example code for a simple web page browser using WebKit QT in C++)似乎使用“旧”风格的WebKit,其中渲染和显示在一个过程中完成。这个例子相当于WebKit2的功能是什么?

WebKit2难道没有任何基本的例子吗?

c++ qt webkit
1个回答
0
投票

Qt的WebKit2仅适用于QML。

使用Qt 5和Webkit2,QtWebKit和Web View的API正在发生重大变化。这是因为使用WebKit2,WebKit和应用程序在不同的进程中运行。旧的QWebView小部件仅在Qt上支持桌面,不会使用新的WebKit2。手机平台通常不会在Qt 5中安装QWidgets模块。

使用QtWebKit QML API的示例可以在Qt WebKit documentation中找到使用WebKit2分裂过程体系结构的例子。有Flickr ViewYouTube View示例

Qt还有WebView模块,例如Minibrowser

WebEngine模块。例子可以找到here

这是一个最简单的WebKit2示例,它只显示谷歌网页

  • 使用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
        }
    }    
}
© www.soinside.com 2019 - 2024. All rights reserved.