找回密码
 立即注册
收起左侧

用QNetworkAccessManager设置超时的问题

13
回复
26135
查看
[复制链接]
累计签到:595 天
连续签到:1 天
来源: 2014-4-15 12:10:17 显示全部楼层 |阅读模式
1Qter豆
我想人为设置一个超时,我想在的想法是定义一个定时器,比如3秒超时,定时器超时的时候如果判断QNetworkReply::isFinished()未完成就人为超时,然后发射emit finished(QnetworkReply *)信号,但是没实现,emit发送finish信号的时候出现错误,请问一下这个可以完成吗,需要怎么操作?

最佳答案

查看完整内容

对啊 你都知道? 定时器超时会有信号,你处理定时器的信号就完了赛……
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-15 12:10:18 显示全部楼层
sywh 发表于 2014-4-15 15:29
这个我知道了,我现在考虑人为超时了怎么发送finished信号?

对啊  你都知道?

定时器超时会有信号,你处理定时器的信号就完了赛……
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2014-4-15 13:53:58 显示全部楼层
关注下 我也在考虑这个问题
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-15 15:01:55 显示全部楼层
如果QNetworkAccessManager触发了 finished信号
你就把定时器停止,否则就等定时器超时
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2014-4-15 15:29:33 显示全部楼层
a408815041 发表于 2014-4-15 15:01
如果QNetworkAccessManager触发了 finished信号
你就把定时器停止,否则就等定时器超时 ...

这个我知道了,我现在考虑人为超时了怎么发送finished信号?
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2014-4-15 18:52:22 显示全部楼层
a408815041 发表于 2014-4-15 18:00
对啊  你都知道?

定时器超时会有信号,你处理定时器的信号就完了赛…… ...

比如说,QNetworkReply正常情况下会有一个finish信号,我如果不认为干预reply完了后发射这个finished信号,timer正常情况下定时完了会有一个timeout信号,我心在想的是reply在没有finish的情况下,比如reply默认的超时是10秒,太久了,而我定时器设定的超时是3秒。我想在定时器3秒超时的时候判断一下reply是否完成isfinished,如果没完成我就人为的发射这个finish信号让reply超时退出,如果完成了就什么都不做。比如说我现在QNetworkManager *manager关联了reply的finish信号connect(manager,SIGNAL(finished(QNetworkManager *)),this,SLOT(replyFinished(finishslot)));  我现在想做这个事connect(timer,SIGNAL(timeout()),this,SLOT(replyFinished(finishslot)));  这样关联信号跟槽是不正确的,但是我要做的情况就是要怎么样把它们关联起来。
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-16 08:52:26 显示全部楼层
本帖最后由 a408815041 于 2014-4-16 08:54 编辑
sywh 发表于 2014-4-15 18:52
比如说,QNetworkReply正常情况下会有一个finish信号,我如果不认为干预reply完了后发射这个finished信号 ...
connect(manager,SIGNAL(finished(QNetworkManager *)),this,SLOT(replyFinished(finishslot)));
这样写都不对,你认真看看参数
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
这样写才对

你用个槽把定时器的信号关联起来
在定义一个信号
在槽里面 发射这个信号啊
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2014-4-16 09:11:13 显示全部楼层
a408815041 发表于 2014-4-16 08:52
connect(manager,SIGNAL(finished(QNetworkManager *)),this,SLOT(replyFinished(finishslot)));
这样写都 ...

我打错了,程序里是对的,我怎么把定时器的信号关联到finish信号啊
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-16 12:20:42 显示全部楼层
sywh 发表于 2014-4-16 09:11
我打错了,程序里是对的,我怎么把定时器的信号关联到finish信号啊

你说的那个信号只能是manager自己发**
你只有【【【【自己定义一个信号】】】】】,然后在定时器的【【【【关联槽里面 发射信号】】】】啊

明白了不
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2014-4-16 14:02:45 显示全部楼层
a408815041 发表于 2014-4-16 12:20
你说的那个信号只能是manager自己发**
你只有【【【【自己定义一个信号】】】】】,然后在定时器的【【【 ...

我知道定义一个信号,我要关联replyFinished()槽需要同样的参数,我定义的信号没有同样的参数
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-16 15:13:17 显示全部楼层
sywh 发表于 2014-4-16 14:02
我知道定义一个信号,我要关联replyFinished()槽需要同样的参数,我定义的信号没有同样的参数 ...

我不明白你为啥非要那个参数,
你自己定义一个无参数的信号,发送出去了,外面再把这个无参数的信号关联起来就行
难道外面不能关联无参数的信号?只能关联哪一个信号 必须带的那类型的参数???
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2014-4-16 16:29:35 显示全部楼层
a408815041 发表于 2014-4-16 15:13
我不明白你为啥非要那个参数,
你自己定义一个无参数的信号,发送出去了,外面再把这个无参数的信号关联 ...

我试过无参信号就是没成功啊~~要不您试试~
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-16 16:51:13 显示全部楼层
sywh 发表于 2014-4-16 16:29
我试过无参信号就是没成功啊~~要不您试试~

代码问题,我都写了很多了 没有不成功的,自己在研究吧
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2014-4-18 11:32:56 显示全部楼层
a408815041 发表于 2014-4-16 16:51
代码问题,我都写了很多了 没有不成功的,自己在研究吧

既然如此,我再研究吧,麻烦了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了