Чтение локального файла из QWebView с использованием Ajax-запроса

Я занимаюсь разработкой программы на Qt / C ++, которая инкапсулирует веб-приложение HTML5 / JQuery.

Раньше я делал запросы Ajax для чтения файлов с сервера. Но теперь я бы хотел, чтобы Qt прочитал файл с локального диска и отправил его содержимое в мое веб-приложение.

Я думаю, что мне нужно, чтобы Qt перехватывал запросы Ajax из веб-приложения и возвращал содержимое файла как результат запроса Ajax.

Проблема в том, что я не знаю, как это сделать. На данный момент я не нашел ничего об этом в Google.

Любая помощь приветствуется!

3

Решение

Я наконец нашел, как это сделать. Я переиграл 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("..."));

// ....
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]