首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QNetworkRequest ()中启动replyFinished()的Get函数

在QNetworkRequest ()中启动replyFinished()的Get函数
EN

Stack Overflow用户
提问于 2011-03-19 20:40:34
回答 2查看 1.2K关注 0票数 7

我有以下问题:

我有一个类Foo封装了一个web。该接口具有以下功能:

Foo::addItem( QString id )

Foo::updateItem( QString id )

这两个函数用相同的QNetworkRequest启动一个URL,但是数据的使用是不同的。因此,我需要知道插槽函数Foo::replyFinished( QNetworkReply *wf_reply )从哪里产生QNetworkRequest。

你怎么解决这个问题?

我可以使用变量来存储QNetworkRequest的入口,以便稍后将其与wf_reply->request()进行比较,但对我来说,这似乎是一种黑客行为。考虑到您可以在第一次执行addItem()之前调用replyFinished()或updateItem() 100次。最好的方法是向QNetworkRequest中添加一个刺或整数,其中包含函数名或id。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-19 20:47:00

在原始的QNetworkRequest中,可以使用

代码语言:javascript
复制
setAttribute(Attribute code, const QVariant & value)

Attribute是一个枚举,并且有一个针对这种情况的保留代码,QNetworkRequest::User。(见:属性)

在您的QNetworkReply中,您可以用request()拉出QNetworkRequest,然后用attribute()从那里获取Attribute

有点小问题,但我觉得应该能行。

票数 4
EN

Stack Overflow用户

发布于 2011-03-21 00:34:16

你有四个选择:

  1. 将您创建的每个应答的void QNetworkReply::finished()信号与处理特定类型请求的函数之一连接
  2. 按照Brian的建议在QNetworkRequest中使用QNetworkRequest()
  3. 使用void QNetworkRequest::setOriginatingObject(QObject * object),它就是为此目的添加的。在您的情况下,问题在于您的两种请求都来自同一个QObject。您可以创建两个虚拟QObjects,只为了发送它们的附件来标记请求,或者可以使用reinterpret_cast作为指针传递某种请求。
  4. 按照您的建议,自己跟踪已启动的请求。因为一次可以有任意数量的活动请求,所以您必须使用两个指针列表(例如,每个类型的请求一个)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5364777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档