主要有如下几个要点
1.从qwebview中获取qnetworkaccessmanager,然后重写createRequest
QNetworkReply *myNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData){ QNetworkReply *reply = QNetworkAccessManager::createRequest(op, req, outgoingData); //连接到reply的readyRead信号 return reply; }
参考文章:http://stackoverflow.com/questions/11132747/qt-reading-data-from-qwebviews-qnetworkaccessmanager/11476348#11476348
I tinkered around with Qt (which I'm new to) and found a way to catch all resources downloaded by WebKit. Here's how:
1) Create your own subclass of QNetworkAccessManager
2) In your derived class, override virtual function createRequest
3) Call base class implementation to get the response object. After that you can look at the URL (or other parameters) and determine whether you need to capture that particular resource or not
4) if you do - connect readyRead signal to some slot that will capture the data
5) in that slot call peek function to read data so that WebKit will get the data also
6) After creating QWebPage object, call setNetworkAccessManager and pass a newly created instance of your subclass from step 1)