2015-05-04 60 views
1

我是初學者。我正在用Qt和webkit創建一個Web瀏覽器(簡單地添加一個webview)。我正在使用最新版本的Ubuntu。Qt和Webkit沒有顯示所有CSS 3,HTML 5效果

問題是在瀏覽器建立後,當我打開網站時,沒有使用所有的CSS3,HTML5效果(即:當我打開Goog​​le地圖時顯示「簡化版」,因爲瀏覽器「過時」) 。

當我嘗試使用chrome或firefox訪問相同的頁面時,所有工作都很好。可能是什麼問題呢?我讀過我可以更新Qt的webkit,但是如何?

編輯

什麼是我的軟件:簡單的WebView拖到打開一個網站的主窗口。網站的CSS3和HTML5沒有正確渲染

非常感謝!

+0

其中的Qt版本您使用的? –

+0

也許改變你的用戶代理? – danielfranca

+0

@ m.s。 Qt Creator 3.3.1(開源) 基於Qt 5.4.1(GCC 4.6.1,64位) –

回答

2

看起來谷歌使用用戶代理來決定您的瀏覽器是否支持CSS3功能。例如,您可以覆蓋默認的用戶代理,使您的QWebView像Google實例一樣顯示給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/")); 
+0

謝謝@ m.s。!有用!!! –

+0

還有一個相關的問題。此時有一些CSS渲染不正確。所以,這個問題並沒有完全解決。打開這個網站:http://mmenu.frebsite.nl/並點擊左上方的菜單。菜單圖標將被轉換(動畫)爲「X」。這適用於chrome,firefox,但不適用於我的webview。 –

+0

我檢查了這個問題。有一些CSS條件不使用「-webkit」前綴。非常感謝您的幫助! –