如何确定 Qt 5 中的 QtWebEngine 在运行时使用的是哪个 chromium 版本?

A.D*_*esh 6 qt chromium qt5 qtwebengine

我在 Qt 5 中找不到任何函数来确定QtWebEngine.

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

eyl*_*esc 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);
}
Run Code Online (Sandbox Code Playgroud)

因此可以从该数据中提取:

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;
Run Code Online (Sandbox Code Playgroud)

输出:

Qt version: 5.14.2 chromium version: 77.0.3865.129
Run Code Online (Sandbox Code Playgroud)