2

QTWebviewウィンドウアプリケーションで使用しています。関数ごとにページをロードするsetHtmlと、Web ビューでコンテンツ イメージがロードされないことがあります。
この問題は、特に複数のページがロードされた後に発生します。

QTWebview私のページはブラウザに完全に読み込まれているため、これは の問題であると確信しています。

私は火のバグを埋め込み、何かを見つけました。はQTWebview実際には新しい css ファイルをロードしません。たとえば、2 つの css ファイルがあります。まず、最初のファイルをスタイルシート フォルダーにコピーし、Web を読み込みます。次に、2 番目のファイルをスタイルシートにコピーし、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ファイルresource file (.qrc)をprefix を追加してリソースに追加しますqrc。例を次に示します。

address.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 に答える