我在窗口应用程序中使用QTWebview
。当我通过setHtml
功能加载页面时,我的网页视图有时不会加载内容图像
加载多个页面后尤其会出现此问题。
我确信这是QTWebview
的问题,因为我的网页已完全加载到浏览器中。
我已经嵌入了Fire bug并找到了一些东西。 QTWebview
实际上没有加载新的css文件。例如,我有2个css文件。首先,我将第一个文件复制到样式表文件夹并加载Web。然后,我将第二个文件复制到样式表并强制webview重新加载。什么都没发生。火虫中的所有css项与第一项相同,外观没有变化。我认为QTWebview
自动缓存数据用于重新加载,但可以找到任何解决方案。有没有人像我一样有问题???
答案 0 :(得分:3)
我终于找到了解决这个问题的方法。因为我总是加载相同的URL并仅更改样式表,QWebview
自动使用它的缓存数据。我通过添加来修复它
答案 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"/>
因此最好将所有文件嵌入资源文件中,并将其编译并嵌入到输出可执行文件中。