隐藏英雄 发表于 2023-2-6 14:04

QT怎么等待文件下载完成后才能再进行新的下载

我使用
reply=m_networkManager->get(QNetworkRequest(m_url));

发送了下载请求,异步进行,但是我想写一个判断来判断是否有文件正在下载要怎么写呢

      if(正在下载)
      {
            QMessageBox::information(this,"提示","正在有文件下载");
            return;
      }

MarioCrane 发表于 2023-2-6 15:39

哈哈,又是你 每天Qt一问。
建议不要用Qt的网络库,Qt的网络库性能十分垃圾且难用。http请求可以自行封装libcurl或使用一些开源库,例如cpr(也是封装的libcurl,十分好用),一般这些库的例程就会有关于下载文件相关的使用方法

隐藏英雄 发表于 2023-2-6 15:57

MarioCrane 发表于 2023-2-6 15:39
哈哈,又是你 每天Qt一问。
建议不要用Qt的网络库,Qt的网络库性能十分垃圾且难用。http请求可以自行封装l ...

:lol 大佬 那现在已经用了QT的网络库的话 有没有办法做一个判断呢

MarioCrane 发表于 2023-2-6 16:20

本帖最后由 MarioCrane 于 2023-2-6 16:24 编辑

隐藏英雄 发表于 2023-2-6 15:57
大佬 那现在已经用了QT的网络库的话 有没有办法做一个判断呢
QNetworkReply::isRunning()
QNetworkReply::isFinished()
可以判断是否完成

你代码里if的判断条件用 reply->isRunning() 就可以

隐藏英雄 发表于 2023-2-6 16:55

本帖最后由 隐藏英雄 于 2023-2-6 17:26 编辑

MarioCrane 发表于 2023-2-6 16:20
QNetworkReply::isRunning()
QNetworkReply::isFinished()
可以判断是否完成

是我没有讲清楚,不好意思。
流程是这样的,鼠标点击控件+传入参数---判断是否正在下载----创建并开始下载产生reply----下载中----下载完成--删除网络reply 置空网络

MarioCrane 发表于 2023-2-6 17:28

隐藏英雄 发表于 2023-2-6 16:55
是我没有讲清楚,不好意思。
流程是这样的,鼠标点击控件+传入参数---判断是否正在下载----创建并开始下 ...

那你的疑惑是哪里呢,你不是想要判断当前是不是正在下载吗?

隐藏英雄 发表于 2023-2-6 17:29

MarioCrane 发表于 2023-2-6 17:28
那你的疑惑是哪里呢,你不是想要判断当前是不是正在下载吗?

对的但是在判断那里使用reply的话第一次点击的时候由于reply 还没有产生会导致程序奔溃

MarioCrane 发表于 2023-2-6 17:53

隐藏英雄 发表于 2023-2-6 17:29
对的但是在判断那里使用reply的话第一次点击的时候由于reply 还没有产生会导致程序奔溃
你可以把每次下载产生的reply放到一个vector或者list里面,每次点按钮遍历判断下状态。完成的就从list移除

LXGZJ237 发表于 2023-2-6 19:53

先研究一下qt自带的示例再来问吧,下载完成会发信号的

隐藏英雄 发表于 2023-2-6 20:15

本帖最后由 隐藏英雄 于 2023-2-6 20:21 编辑

2370177068 发表于 2023-2-6 19:53
先研究一下qt自带的示例再来问吧,下载完成会发信号的
大佬请看一下5楼   有什么好的办法吗下载完成发的信号,在没产生下载的时候怎么用?    我在没下载之前就需要做判断    这个逻辑我有点不明白
页: [1] 2
查看完整版本: QT怎么等待文件下载完成后才能再进行新的下载