c++ - 在 replyFinished() 中获取发起 QNetworkRequest 的函数

标签 c++ qt

我有以下问题:

我有一个 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/

相关文章:

c++ - 如何将openCV中裁剪图像的数据数组转换为Qt中的RGB直方图

c++ - QtScript——通过 C++ 端实现的脚本端回调

Qt 清除 QTextEdit/QPlainTextEdit 中的撤消历史记录吗?

qt - Qml 项目状态 : previous state

c++ - 将 std::vector 复制到 std::array

c++ - 如何使用模板定义函数的 header 以检查 C++ 中的映射

c++ - 编译器提示类型冲突

c++ - 错误 : no match for ‘operator[]’ (operand types are ‘QVector<int>’ and ‘QCharRef’ )

c++ - 在 C++ 中编写 if then else 语句的更有效方法

c++ - 如何像 c 数组一样初始化 'const std::vector<T>'