加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在QWebView中覆盖页面回复

发布时间:2020-12-16 06:56:32 所属栏目:百科 来源:网络整理
导读:我试图拦截Qt的QWebView中的页面/表单请求,并在某些情况下使用替代内容进行响应. QNetworkReply* ngcBrowser::createRequest(Operation operation,const QNetworkRequest request,QIODevice* ioDevice){ view-page()-setNetworkAccessManager(this); QNetwor
我试图拦截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,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失败表明它是一个ReadOnly设备.

谢谢你的帮助.

解决方法

有很多方法可以做到这一点.这是一种方式.

connect(networkAccessManager,SLOT(replyReceived(QNetworkReply*)))
....

void replyReceived(QNetworkReply* reply)    // reply slot
{
    if(reply->request().url().path().endsWith("ajax"))
    {
      QByteArray array = reply->readll();/*reply is cleared after this call and will not contains anything.*/
      /*Write the JSON wherever you want to in the array*/
      reply->write(array);

    }
}

您必须根据您想要收听的信号对此进行微调 – 从QNAM回复完成或从QNetworkReply等处完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读