我有以下问题:
我有一个类Foo封装了一个web。该接口具有以下功能:
Foo::addItem( QString id )
Foo::updateItem( QString id )
这两个函数用相同的QNetworkRequest启动一个URL,但是数据的使用是不同的。因此,我需要知道插槽函数Foo::replyFinished( QNetworkReply *wf_reply )从哪里产生QNetworkRequest。
你怎么解决这个问题?
我可以使用变量来存储QNetworkRequest的入口,以便稍后将其与wf_reply->request()进行比较,但对我来说,这似乎是一种黑客行为。考虑到您可以在第一次执行addItem()之前调用replyFinished()或updateItem() 100次。最好的方法是向QNetworkRequest中添加一个刺或整数,其中包含函数名或id。
发布于 2011-03-19 20:47:00
在原始的QNetworkRequest中,可以使用
setAttribute(Attribute code, const QVariant & value)Attribute是一个枚举,并且有一个针对这种情况的保留代码,QNetworkRequest::User。(见:属性)
在您的QNetworkReply中,您可以用request()拉出QNetworkRequest,然后用attribute()从那里获取Attribute
有点小问题,但我觉得应该能行。
发布于 2011-03-21 00:34:16
你有四个选择:
void QNetworkReply::finished()信号与处理特定类型请求的函数之一连接void QNetworkRequest::setOriginatingObject(QObject * object),它就是为此目的添加的。在您的情况下,问题在于您的两种请求都来自同一个QObject。您可以创建两个虚拟QObjects,只为了发送它们的附件来标记请求,或者可以使用reinterpret_cast作为指针传递某种请求。https://stackoverflow.com/questions/5364777
复制相似问题