我在一个窗口应用程序中使用QTWebview。当我通过setHtml函数加载页面时,我的web视图有时不加载内容图像。
在加载多个页面后,尤其会出现此问题。
我确信这是QTWebview的问题,因为我的页面完全是在浏览器中加载的。
我已经嵌入了Fire bug,并且发现了一些东西。QTWebview实际上并不加载新的css文件。例如,我有2个css文件。首先,我将第一个文件复制到stylesheet文件夹并加载网页。然后,我将第二个文件复制到样式表中,并强制重新加载webview。什么事都没发生。fire bug中的所有css项都与第一个相同,外观没有变化。我认为QTWebview会自动缓存数据以便重新加载,但可以找到任何解决方案。有没有人像我一样有同样的问题?
发布于 2013-03-25 11:48:13
我终于找到了这个问题的解决方案。因为我总是加载相同URL并且只更改样式表,所以QWebview自动使用它的缓存数据。我修复了它,在重新加载之前添加了QWebSettings::clearMemoryCaches();。
发布于 2013-03-22 22:47:14
这些东西是用来在本地内容中使用QWebView的,可能对于Web也是一样的,如果你想加载CSS文件,你必须把它放在HTML文件中,然后在QWebView中加载HTML文件,你可以把你的HTML文件嵌入到resource file (.qrc)中,然后通过添加前缀qrc从资源中加载它,下面是一个例子:
在addresses.h .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"/>在您的HTML文件中(如果它位于本地硬盘):
<link type="text/css" rel="stylesheet" href="/path-to-your-css-file.css"/>因此最好将所有文件嵌入到一个资源文件中,它将被编译并嵌入到输出可执行文件中。
https://stackoverflow.com/questions/15553018
复制相似问题