如何在运行时确定Qt 5中QtWebEngine使用的Chromium版本?

6

我在Qt 5中找不到任何函数来确定QtWebEngine使用哪个版本的Chromium。

我不想在代码中硬编码Chromium版本,因为我经常更新我的应用程序,每个版本的Chromium版本通常都会更改。而且Qt是向后兼容的,可以在不更新我的应用程序的情况下对其进行更新。

3个回答

4

目前还没有直接的解决方案,但是通过查看源代码,您可以看到它用于设置默认用户代理:

std::string ContentBrowserClientQt::getUserAgent()
{
    // Mention the Chromium version we're based on to get passed stupid UA-string-based feature detection (several WebRTC demos need this)
    return content::BuildUserAgentFromProduct("QtWebEngine/" QTWEBENGINECORE_VERSION_STR " Chrome/" CHROMIUM_VERSION);
}

因此,可以从该数据中提取:
QString version;
QString user_agent = QWebEngineProfile::defaultProfile()->httpUserAgent();
for(const QString & text : user_agent.split(" ")){
    if(text.startsWith(QStringLiteral("Chrome/"))){
        version = text.mid(QStringLiteral("Chrome/").length());
    }
}
qDebug().noquote()<< "Qt version:" << QT_VERSION_STR << "chromium version:" << version;

输出:

Qt version: 5.14.2 chromium version: 77.0.3865.129

2
您可以使用 runJavaScript 方法来展示一个对话框,并显示包括 Chromium 版本在内的 navigator.userAgent JavaScript 变量。
QWebEngineView webView;
webView.page()->runJavaScript("alert(navigator.userAgent)");

在我的情况下,警告框显示如下内容:
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.1 Chrome/80.0.3987.163 Safari/537.36
寻找Chromium版本的有趣部分是 Chrome/80.0.3987.163,这意味着Qt Web Engine使用的Chromium版本为80.0.3987.163。

1
如果你运行QT并允许devtools,你可以通过这种方式在devtools中获取chrome版本:
navigator.appVersion.match(/.*Chrome\/([0-9\.]+)/)[1]

这个解决方案来自于stack overflow answer


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接