我有以下问题:

我有一个Foo类,它封装了一个Web-api。该界面具有以下功能:

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中,您可以将QNetworkRequestrequest()一起拉出,然后从此处使用Attribute获得attribute()
有点破解,但我认为它应该可以工作。

关于c++ - 获取在QFinished()中启动QNetworkRequest的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5364777/

10-11 17:51