Qt 和 Webkit 未显示全部 CSS 3、HTML 5 效果

Qt and Webkit not showing all CSS 3, HTML 5 effects

我是初学者。我正在使用 Qt 和 webkit 创建一个网络浏览器(只是添加了一个 webview)。我使用的是最新版本的 Ubuntu.

问题是在构建浏览器后,当我打开网站时,所有 CSS3、HTML5 效果都无法正常工作(即:当我打开 Google 地图时,它显示 "the simplified version" 因为浏览器是 "outdated").

当我尝试使用 chrome 或 firefox 访问相同的页面时一切正常。可能是什么问题呢?我看到我可以更新Qt的webkit,但是如何?

编辑

我的软件是什么:一个简单的 webview 拖到打开网站的主窗口。网站的 CSS3 和 HTML 5 未正确呈现

非常感谢!

看起来 Google 使用用户代理来决定您的浏览器是否支持 CSS3 功能。例如,您可以覆盖默认用户代理,使您的 QWebView Google 看起来像 Firefox 实例。

您需要继承 QWebPage 并覆盖 userAgentForUrl 方法:

class WebPage : public QWebPage
{
public:
    WebPage(QObject* parent = 0) : QWebPage(parent){}
    QString userAgentForUrl(const QUrl &url) const
    {
        return "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";
    }
};

然后将这个子类设置到您的 QWebView 中:

WebPage* webPage = new WebPage(this);
ui->webView->setPage(webPage);
ui->webView->load(QUrl("http://maps.google.com/"));