Qt の QWebView 内でページ/フォーム リクエストをインターセプトし、場合によっては別のコンテンツで応答しようとしています。
QNetworkReply* ngcBrowser::createRequest(Operation operation, const QNetworkRequest& request, QIODevice* ioDevice)
{
view->page()->setNetworkAccessManager(this);
QNetworkReply* response = NULL;
if (request.url().path().endsWith("ajax"))
{
response = QNetworkAccessManager::createRequest(operation, request, ioDevice);
response->write("{ success: true }");
}
else
{
response = QNetworkAccessManager::createRequest(operation, request, ioDevice);
}
return response;
}
上記のように、QNAM の createRequest メソッドをオーバーライドして、すべてのページ リクエストを受け取り、Url が .ajax 拡張子で終わる場合は JSON オブジェクトで応答します。ただし、データをネットワーク ストリームに書き戻すのは難しいと感じています。
これについてのヒントやヒントはありますか?
乾杯、ベン
アップデート:
こんにちは Abhijith、私はあなたの解決策を試みましたが、信号をスロットに接続できません。
QNetworkAccessManager* nam = view->page()->networkAccessManager();
bool status = QObject::connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyReceived(QNetworkReply*)));
if(!status)
{
QErrorMessage errorMessage;
errorMessage.showMessage("connect failed");
errorMessage.exec();
}
エラー:
Object::connect: そのようなスロットはありません ngcBrowser::replyRecieved(QNetworkReply*)
更新:
わかりましたが、IODeviceに書き込もうとすると失敗し、読み取り専用デバイスであることを示しています。
すべての助けをありがとう。