我在Qt 5中找不到任何函数来确定QtWebEngine
使用哪个版本的Chromium。
我不想在代码中硬编码Chromium版本,因为我经常更新我的应用程序,每个版本的Chromium版本通常都会更改。而且Qt是向后兼容的,可以在不更新我的应用程序的情况下对其进行更新。
我在Qt 5中找不到任何函数来确定QtWebEngine
使用哪个版本的Chromium。
我不想在代码中硬编码Chromium版本,因为我经常更新我的应用程序,每个版本的Chromium版本通常都会更改。而且Qt是向后兼容的,可以在不更新我的应用程序的情况下对其进行更新。
目前还没有直接的解决方案,但是通过查看源代码,您可以看到它用于设置默认用户代理:
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
runJavaScript
方法来展示一个对话框,并显示包括 Chromium 版本在内的 navigator.userAgent
JavaScript 变量。QWebEngineView webView;
webView.page()->runJavaScript("alert(navigator.userAgent)");
Chrome/80.0.3987.163
,这意味着Qt Web Engine使用的Chromium版本为80.0.3987.163。navigator.appVersion.match(/.*Chrome\/([0-9\.]+)/)[1]
这个解决方案来自于stack overflow answer。