2

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

我确信这是一个问题,QTWebview因为我的页面完全在浏览器中加载。

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

4

2 回答 2

3

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

于 2013-03-25T03:48:13.127 回答
2

这些东西用于QWebView本地内容,可能Web与一些更改相同,如果你想加载 CSS 文件,你必须把它放在 HTML 文件中并加载 HTML 文件QWebView,你可以将你的 HTML 文件嵌入到 aresource 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"/>

所以最好将所有文件嵌入到资源文件中,它将被编译并嵌入到输出的可执行文件中。

于 2013-03-22T14:47:14.170 回答