2013-03-21 40 views
2

我在窗口應用程序中使用QTWebview加載圖像。當我通過setHtml函數加載頁面時,我的web視圖有時不會加載內容圖像。
這個問題幾頁被加載後,尤其發生。QTWebview不從CSS

我相信,這是QTWebview一個問題,因爲我的網頁瀏覽器中完全加載。請幫助我解決這個問題,這很緊急。

更新1:

我已經嵌入消防錯誤,並已發現了什麼。 QTWebview實際上不會加載新的css文件。例如,我有2個css文件。首先,我將第一個文件複製到樣式表文件夾並加載網頁。然後,我將第二個文件複製到樣式表中並強制webview重新加載。什麼都沒發生。火蟲中的所有CSS項目都與第一項相同,外觀沒有變化。我認爲QTWebview自動緩存數據重新加載,但可以找到任何解決方案。有沒有人有像我一樣的問題?

回答

3

我終於找到了這個問題的解決方案。由於我總是加載相同的URL並僅更改樣式表,因此QWebview會自動使用它的緩存數據。我通過重裝前加入 QWebSettings::clearMemoryCaches();固定它。

2

這些東西都是在本地內容和可能的Web一樣有了一些變化,如果要加載CSS文件,你必須把它放在HTML文件,並加載HTML文件中QWebView,您可以嵌入你的HTML中使用QWebView文件中resource file (.qrc)並通過添加前綴qrc從資源加載它,這裏有一個例子:

在addresses.h文件

const QString MAIN_HTML = "qrc:/path-to-your-HTML-file-in-resource-file.html";  
在MainWindow.cpp

QWebView *webView = new QWebView(); 
webView->settings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, true); 
webView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled, true); 
webView->page()->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true); 
webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); 
webView->settings()->setUserStyleSheetUrl(QUrl("qrc:/path-your-css-file-in-resource-file.css")); 

最後加載HTML文件:

webView->load(QUrl(MAIN_HTML)); // remember to include header file -> #include "addresses.h" 
,如果你想從您的本地硬盤加載您的文件,由剛剛從你的地址刪除 qrc使用 QUrl

QUrl::fromLocalFile(":/path-to-your-css-file.css"); 

在HTML文件(如果它位於資源文件中):

<link type="text/css" rel="stylesheet" href="qrc:/path-to-your-css-file-in-resource-file.css"/> 

in您的HTML文件(如果它位於本地硬盤):

<link type="text/css" rel="stylesheet" href="/path-to-your-css-file.css"/> 

所以最好是嵌入在資源文件中所有的文件,它會被編譯並在輸出可執行文件中嵌入。

+0

感謝您的答覆。但是我的網絡視圖沒有變化。每次加載新頁面時,我都嘗試設置'setUserStyleSheetUrl',但沒有任何幫助。我的應用程序允許用戶修改外觀,因此我無法將css文件嵌入到資源中。 – sahara108 2013-03-23 04:58:46

+0

我假設我有2個保存的文件。打開文件即可,用戶可以繼續編輯網頁。但如果他/她繼續打開第二個,Qwebview將加載第一個。這真的很奇怪。無論首先打開哪個文件,總會發生這種情況。 – sahara108 2013-03-23 05:03:15

+1

@ sahara108:在每個文件打開時,您應該設置其地址以加載(QUrl(地址)),並且QwebView加載該文件,如果文件沒有加載,問題來自加載方法以外的任何地方,請在此處發佈代碼進一步驗證。 – 2013-03-23 10:06:50