QWebEngine的缩放功能不起作用



我创建了一个用于显示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
    }
}

相关内容

最新更新