首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定运行时Qt 5中的QtWebEngine使用哪个铬版本?

如何确定运行时Qt 5中的QtWebEngine使用哪个铬版本?
EN

Stack Overflow用户
提问于 2020-05-31 03:18:29
回答 3查看 2K关注 0票数 5

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

我不想在我的代码中硬编码铬版本,因为我经常更新我的应用程序,并且铬版本通常在每个版本中被更改。此外,Qt是向后兼容的,可以在不更新我的应用程序的情况下更新它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-31 04:00:23

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

代码语言:javascript
复制
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);
}

所以它可以从这些数据中提取出来:

代码语言:javascript
复制
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;

输出:

代码语言:javascript
复制
Qt version: 5.14.2 chromium version: 77.0.3865.129
票数 3
EN

Stack Overflow用户

发布于 2020-09-24 17:03:07

您可以使用runJavaScript方法显示带有navigator.userAgent Javascript变量的对话框,其中包括Chromium:

代码语言:javascript
复制
QWebEngineView webView;
webView.page()->runJavaScript("alert(navigator.userAgent)");

在我的例子中,警报框显示如下:

Mozilla/5.0 (WindowsNT6.2;Win64;x64) AppleWebKit/537.36 (KHTML,类似壁虎) QtWebEngine/5.15.1 Chrome/80.3987.163 Safari/537.36

查找Chromium的有趣部分是Chrome/80.0.3987.163,这意味着Qt引擎使用的Chromium为80.0.3987.163。

票数 2
EN

Stack Overflow用户

发布于 2020-06-09 10:00:37

如果您使用允许的德沃尔斯运行QT,则可以在devtools中获得铬版本:

代码语言:javascript
复制
navigator.appVersion.match(/.*Chrome\/([0-9\.]+)/)[1]

这个解决方案来自于这个堆栈溢出应答

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62111129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档