我有以下问题:
我有一个 Foo 类,它封装了一个 web-api。该接口(interface)具有以下功能:
Foo::addItem( QString id )
Foo::updateItem( QString id )
这两个函数都使用相同 URL 启动 QNetworkRequest,但数据的使用不同。 因此,我需要在插槽函数 Foo::replyFinished( QNetworkReply *wf_reply ) 中了解 QNetworkRequest 的来源。
你会如何解决这个问题?
我可以使用变量来存储 QNetworkRequest 的地址,以便稍后将其与 wf_reply->request() 进行比较,但这对我来说似乎是一个 hack。考虑到您可以在第一次执行 replyFinished() 之前调用 addItem() 或 updateItem() 数百次。 最好的方法是向包含函数名称或 ID 的 QNetworkRequest 添加字符串或整数。
最佳答案
在您原来的 QNetworkRequest
中,您可以使用
setAttribute(Attribute code, const QVariant & value)
Attribute
是一个枚举,并且有一个针对这种情况的保留代码,QNetworkRequest::User
。 (参见:Attribute)
在您的QNetworkReply
中,您可以使用request()
提取QNetworkRequest
,然后从那里获取Attribute
使用 attribute()
有点乱,但我认为它应该可行。
关于c++ - 在 replyFinished() 中获取发起 QNetworkRequest 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364777/