[英]Get function which initiated QNetworkRequest in replyFinished()
我有以下问题:
我有一个类Foo,它封装了一个web-api。 界面具有以下功能:
Foo :: addItem(QString id)
Foo :: updateItem(QString id)
两个函数都使用相同的 URL启动QNetworkRequest,但数据的使用情况不同。 因此我需要知道QNetworkRequest发起的插槽函数Foo :: replyFinished(QNetworkReply * wf_reply) 。
你怎么解决这个问题?
我可以使用变量存储QNetworkRequest的地址,以便稍后将其与wf_reply-> request()进行比较,但这对我来说似乎是一个黑客攻击。 考虑到你可以在第一次执行replyFinished()之前调用addItem()或updateItem()一百次。 最好的方法是向QNetworkRequest添加一个包含函数名称或id的sting或整数。
在原始的QNetworkRequest
您可以使用设置属性
setAttribute(Attribute code, const QVariant & value)
Attribute
是一个枚举,只有这种情况有一个保留代码, QNetworkRequest::User
。 (参见: 属性 )
在QNetworkReply
,您可以使用request()
获取QNetworkRequest
,然后使用attribute()
从那里获取Attribute
一点点黑客,但我认为它应该工作。
您有四种选择:
void QNetworkReply::finished()
信号 void QNetworkRequest::setOriginatingObject(QObject * object)
。 您遇到的问题是两种请求都来自同一个QObject。 您可以创建两个虚拟QObject,仅用于将其地址发送到标记请求,或者您可以使用reinterpret_cast将请求类型作为指针传达。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.