我创建了一个用于显示local.html页面的简单项目。我在那里使用了Qt5.4和QWebView
。但在切换到Qt5.6后,我注意到Qt WebKit已被弃用,不再受支持。因此,我决定用Qt网络引擎。
用QWebEngineView
替换QWebView
后我研究了setZoomFactor
方法没有效果。这是已知的问题吗?我该怎么处理?
编辑:最近调查了一件有趣的事情。我使用setHtml
方法将本地.html文件的内容设置为我的QWebEngineView
。这些文件还包含对图像的引用。因此,我将baseUrl参数设置为所需图像的相对路径。在这种情况下,使用setZoomFactor
方法没有任何效果。
但当我不将图像的相对路径设置为参数时,QWebEngineView
上没有图像,但缩放功能可以工作。你知道这里出了什么问题吗?
在Qt 5.11中使用QML zoomFactor属性或C++setZoomFactor(privateAPI)为QML WebEngineView设置zoomFactors未按预期工作。我从QTBug51992中的评论中发现,当在页面加载后设置时,它可以工作。
QML解决方案:
WebEngineView {
// ...
onLoadingChanged: {
zoomFactor = 0.75
}
}
QWebEngineView解决方案:连接loadFinished
信号,每次页面加载后设置zoomFactor:
main.cpp(engine.load调用后):
QWebEngineView *webView; // = ...
QObject::connect(webView, &QWebEngineView::loadFinished,
[=](bool arg) {
webView->setZoomFactor(zoomFactor);
});
这似乎是这个版本的Qt中的一个已知错误。您可以在这里自行查看:Qt Bug 51992。
基本上,据说:
这看起来像是一个已知的故障,目前正在发生,因为我们用于设置缩放因子的Chromium API。
还有:
Chromium将缩放因子限制为最大5.0-任何使用高于这个数字不会有任何影响。
希望这对你有帮助。
setZoomFactor在QT 5.15版本中无法正常工作。
多次调用setZoomFactor以解决问题。
WebEngineView {
function setZoomFactor(real) {
zoomFactor = real
zoomFactor = real
zoomFactor = real
}
}