我正在尝试用Qt和WebKit构建一个超级简单的虚拟网页视图来查看页面,这样我就可以更好地理解WebKit2拆分过程模型。
现有的示例/问题(如Example code for a simple web page browser using WebKit QT in C++)似乎使用了“旧”风格的WebKit,其中呈现和显示在一个进程中完成。这个例子的等价物是什么,但是是为WebKit2做的吗?
使用WebKit2是否如此困难,以至于没有任何基本的示例?
发布于 2019-03-12 15:40:20
Qt的WebKit2仅适用于QML。
带有Qt 5和Webkit2的
QtWebKit和Web View的API正在发生重大变化。这是因为使用WebKit2时,WebKit和应用程序运行在不同的进程中。旧的QWebView小部件将只在桌面版的Qt上受支持,不会使用新的WebKit2。移动电话平台通常不会在Qt5中安装QWidgets模块。
可以在Qt WebKit documentation中找到使用QtWebKit QML的示例,该示例利用了WebKit2进程拆分体系结构,还有Flickr View和YouTube View示例
Qt还有像Minibrowser这样的例子的WebView模块
这是一个最简单的WebKit2示例,它只显示了谷歌网页
QT += quick qml webkitmain.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
}
}
}https://stackoverflow.com/questions/55114312
复制相似问题