我在Qt 5中找不到任何函数来确定QtWebEngine使用哪个铬版本。
我不想在我的代码中硬编码铬版本,因为我经常更新我的应用程序,并且铬版本通常在每个版本中被更改。此外,Qt是向后兼容的,可以在不更新我的应用程序的情况下更新它。
发布于 2020-05-31 04:00:23
没有直接的解决方案,但是看看源代码,您可以看到它用于设置默认的用户代理:
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发布于 2020-09-24 17:03:07
您可以使用runJavaScript方法显示带有navigator.userAgent Javascript变量的对话框,其中包括Chromium:
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。
https://stackoverflow.com/questions/62111129
复制相似问题