我正在尝试使用Qt和WebKit构建一个超级简单的虚拟Web视图来查看页面,以便我可以更好地理解WebKit2拆分过程模型。
现有的例子/问题(如Example code for a simple web page browser using WebKit QT in C++)似乎使用“旧”风格的WebKit,其中渲染和显示在一个过程中完成。这个例子相当于WebKit2的功能是什么?
WebKit2难道没有任何基本的例子吗?
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 View和YouTube View示例
Qt还有WebView模块,例如Minibrowser
这是一个最简单的WebKit2示例,它只显示谷歌网页
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
}
}
}