【问题标题】:Read local file from QWebView using Ajax request使用 Ajax 请求从 QWebView 读取本地文件
【发布时间】:2012-12-26 04:11:56
【问题描述】:

我正在开发一个封装 HTML5/JQuery Web 应用程序的 Qt/C++ 程序。

我曾经发出 Ajax 请求以从服务器读取文件。但现在,我希望 Qt 从本地磁盘读取文件并将其内容发送到我的网络应用程序。

我认为我需要 Qt 来捕获来自 Web 应用程序的 Ajax 请求并将文件内容作为 Ajax 请求结果返回。

问题是我不知道该怎么做。目前,我还没有在 google 上找到任何相关信息。

欢迎任何帮助!

【问题讨论】:

    标签: c++ ajax file qt qwebview


    【解决方案1】:

    我终于找到了方法。我覆盖了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("..."));
    
    // ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-24
      • 2012-10-11
      • 2015-01-05
      • 2021-03-26
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      相关资源
      最近更新 更多