QT和WebKit并未显示所有CSS 3,HTML 5效果

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

本文关键字:CSS HTML 效果 WebKit 显示 QT      更新时间:2023-10-16

我是初学者。我正在使用QT和WebKit创建Web浏览器(只需添加WebView)即可。我正在使用最新版本的ubuntu。

问题是在构建浏览器之后,当我打开网站时,没有工作所有CSS3,HTML5效果(即:当我打开Google Maps时,它将显示"简化版本",因为浏览器是"过时的")。

当我尝试使用Chrome或Firefox访问相同的页面时,它们都可以很好地工作。可能是什么问题呢?我读到我可以更新QT的Webkit,但是如何?

编辑

我的软件是什么:一个简单的WebView拖到了开放网站的MainWindow。网站的CSS3和HTML 5未正确渲染

非常感谢!

看起来Google使用用户代理来决定您的浏览器是否支持CSS3功能。您可以覆盖默认用户代理,以使您的QWEBView像Firefox实例一样出现在Google上。

您需要子类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/"));