获取在replyFinished()中启动QNetworkRequest的函数

Jul*_*ian 6 c++ qt

我有以下问题:

我有一个类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或整数.

Bri*_*ach 5

在你的原件中,QNetworkRequest你可以设置一个属性

setAttribute(Attribute code, const QVariant & value)
Run Code Online (Sandbox Code Playgroud)

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

在您的中QNetworkReply,您可以拉动QNetworkRequest然后从那里request()获取Attributeattribute()

有点黑客,但我认为它应该有效。