2012-02-03 4 views
2

QWebViewがあり、QNetworkDiskCacheを作成して設定しました。今、私はすべてのQNetworkRequestsがPreferNetworkの代わりに常にPreferCacheを使用するようにしたいと思います。QNetworkRequestを常にPreferCacheに設定する

これを設定するにはどうすればよいですか?私もこれを行うために必要がある場合、私はもちろん、不思議

webView->page()->networkAccessManager() 

経由明白な方法があるように思えません、私が達成したいことです:私は、カスタムのブラウザを持っている、それは特別なイントラネットに接続していますサイトでは、特に言及されていない限り、サーバーによって送信されたすべてのイメージ、css、およびjsをほぼ永続的にキャッシュします。

これはどのようにして達成できますか?

答えて

3

あなたはクラスQNetworkAccessManagerを導出し、このようにその仮想関数createRequestを再定義することができます:

QNetworkReply * MyNetworkManager::createRequest(
    QNetworkAccessManager::Operation operation, 
    const QNetworkRequest & originalRequest, 
    QIODevice * device) 
{ 
    QNetworkRequest request = originalRequest; 
    if(request.attribute(QNetworkRequest::CacheLoadControlAttribute) == 
     QNetworkRequest::PreferNetwork) 
    { 
     request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, 
      QNetworkRequest::PreferCache); 
    } 
    return QNetworkAccessManager::createRequest(operation, request, device); 
} 
関連する問題