我正在开发一个封装HTML5 / JQuery Web应用程序的Qt / C ++程序。
我曾经用Ajax请求从服务器读取文件。但现在,我希望Qt从本地磁盘读取文件并将其内容发送到我的网络应用程序。
我认为我需要Qt从Web应用程序捕获Ajax请求并将文件内容作为Ajax请求结果返回。
问题是我不知道该怎么做。目前,我还没有在谷歌上发现任何相关信息。
欢迎任何帮助!
答案 0 :(得分:2)
我终于找到了怎么做。我超越了QNetworkAccessManager
。
MyQNetworkAccessManager .h:
class MyQNetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
protected:
virtual QNetworkReply * createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0);
};
<强> MyQNetworkAccessManager.cpp:强>
QNetworkReply * MyQNetworkAccessManager::createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData) {
QUrl url = req.url();
QString path = url.path();
if (op == QNetworkAccessManager::GetOperation && path.endsWith("xml")) {
QUrl newUrl;
if(path.endsWith("..")) {
newUrl.setUrl("...");
}
else if(path.endsWith("...")) {
newUrl.setUrl("...");
}
else {
newUrl = url;
}
return QNetworkAccessManager::createRequest(QNetworkAccessManager::GetOperation, QNetworkRequest(newUrl));
}
else
{
return QNetworkAccessManager::createRequest(op, req, outgoingData);
}
}
<强> MainWindow.cpp:强>
// ....
QWebView *qWebView = new QWebView();
QWebPage *page = qWebView->page();
MyQNetworkAccessManager *networkManager = new MyQNetworkAccessManager();
page->setNetworkAccessManager(networkManager);
qWebView->setPage(page);
qWebView->load(QUrl("..."));
// ....