QTWebview不会从css加载图像

时间:2013-03-21 16:28:41

标签: qt qtwebkit

我在窗口应用程序中使用QTWebview。当我通过setHtml功能加载页面时,我的网页视图有时不会加载内容图像 加载多个页面后尤其会出现此问题。

我确信这是QTWebview的问题,因为我的网页已完全加载到浏览器中。

我已经嵌入了Fire bug并找到了一些东西。 QTWebview实际上没有加载新的css文件。例如,我有2个css文件。首先,我将第一个文件复制到样式表文件夹并加载Web。然后,我将第二个文件复制到样式表并强制webview重新加载。什么都没发生。火虫中的所有css项与第一项相同,外观没有变化。我认为QTWebview自动缓存数据用于重新加载,但可以找到任何解决方案。有没有人像我一样有问题???

2 个答案:

答案 0 :(得分:3)

我终于找到了解决这个问题的方法。因为我总是加载相同的URL并仅更改样式表,QWebview自动使用它的缓存数据。我通过添加来修复它 QWebSettings::clearMemoryCaches();。

答案 1 :(得分:2)

这些内容用于在本地内容中使用QWebView,而Web可能与某些更改相同,如果要加载CSS文件,则必须将其放入HTML文件并加载HTML文件QWebView,您可以将您的HTML文件嵌入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"

如果您要从本地硬盘加载文件,只需从您的地址中删除QUrl即可使用qrc

 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"/>
HTML文件中的

(如果它位于本地硬盘中):

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

因此最好将所有文件嵌入资源文件中,并将其编译并嵌入到输出可执行文件中。