我通过 QNetworkAccessManager 发送 http 请求,完成下载的功能,在主线程中没有问题,代码如下:
功能非常简单,截图是按钮的槽函数:获取lineEdit里的url,然后创建 QNetworkAccessManager 、QUrl,通过open函数发送请求,然后绑定响应reply的信号和槽,槽函数都是我自己写的,功能验证都是没问题,可以下载文件的。但是我想多线程下载文件,定义MyWork类继承QObject 和 QRunnable ,MyWork里的run函数如下:
槽函数都是我从已经正确的代码里复制粘贴过来的,应该是没问题的,但是我发现运行不成功,文件没法下载。我在各个槽函数里都加了打印语句,可是都没有输出,包括 reply 的 error 对应的槽函数,按理说如果请求失败的话,信号error 绑定的槽函数应该也会执行啊,但是error里的打印语句也没执行,我想了很久没找到原因,我之前是玩Java的,最近在整QT,对QT还不是很了解,特此问一下各位朋友。
我在想,是不是QRunnable 里绑定的信号和槽,不是在一个线程里执行才导致这个问题啊,还是有什么QT逻辑上的问题我没接触到?
不知道你这个问题是否已经解决, 如果还没有解决的话: