3

HTML5/JQuery Web アプリをカプセル化する Qt/C++ プログラムを開発しています。

以前は、サーバーからファイルを読み取るために Ajax リクエストを作成していました。しかし今、Qt にローカル ディスクからファイルを読み取らせ、そのコンテンツを Web アプリに送信させたいと考えています。

Web アプリからの Ajax リクエストをキャッチし、ファイルの内容を Ajax リクエストの結果として返すには、Qt が必要だと思います。

問題は、やり方がわからないことです。今のところ、Googleでそれについて何も見つけていません。

どんな助けでも大歓迎です!

4

1 に答える 1

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("..."));

// ....
于 2013-01-14T09:31:27.587 に答える