如何向正确的处理程序发送任意下载请求

时间:2011-02-27 06:00:44

标签: c++ multithreading qt network-programming

我正在构建一个Qt应用程序并使用QNetworkAccessManager来管理我的http请求。由于QNetworkAccessManager的异步特性,您必须绑定一个插槽才能在完成后接收QNetworkReply。

我是多线程设计的新手,所以我不知道如何处理这个问题。我将有3个单独类型的网络回复,需要在绑定的槽中解析,然后传递给正确的处理程序。一个将提取链接,第二个将提取图片,第三个将解析一个帖子请求的回复,以验证它是否成功。所有这些都发生在QWidget子类中。

所以,我想知道这是如何正常处理的。正如我所看到的那样,纯粹基于直觉,因为我对这个特定主题的阅读很少,我认为有两种方法可以解决这个问题。一种是根据呼叫重新绑定网络管理器的finished()信号,另一种是使用某种状态标志并检查那些以查看预期的回复。什么是首选方法,不一定是在这两者之间,这是我能想到的全部,更有经验的人可能会有更好的解决方案。

现在,我对c ++也相当新,所以如果后者是更好的方法,在这种情况下处理标志的最佳方法是什么?我会使用bitset,枚举/标志设置功能,还是其他什么?谢谢你们!

1 个答案:

答案 0 :(得分:0)

如果您知道由于执行特定请求而获得的回复类型,您可以将void QNetworkReply::finished ()信号连接到合适的处理程序。