QT怎么等待文件下载完成后才能再进行新的下载
我使用reply=m_networkManager->get(QNetworkRequest(m_url));
发送了下载请求,异步进行,但是我想写一个判断来判断是否有文件正在下载要怎么写呢
if(正在下载)
{
QMessageBox::information(this,"提示","正在有文件下载");
return;
} 哈哈,又是你 每天Qt一问。
建议不要用Qt的网络库,Qt的网络库性能十分垃圾且难用。http请求可以自行封装libcurl或使用一些开源库,例如cpr(也是封装的libcurl,十分好用),一般这些库的例程就会有关于下载文件相关的使用方法 MarioCrane 发表于 2023-2-6 15:39
哈哈,又是你 每天Qt一问。
建议不要用Qt的网络库,Qt的网络库性能十分垃圾且难用。http请求可以自行封装l ...
:lol 大佬 那现在已经用了QT的网络库的话 有没有办法做一个判断呢 本帖最后由 MarioCrane 于 2023-2-6 16:24 编辑
隐藏英雄 发表于 2023-2-6 15:57
大佬 那现在已经用了QT的网络库的话 有没有办法做一个判断呢
QNetworkReply::isRunning()
QNetworkReply::isFinished()
可以判断是否完成
你代码里if的判断条件用 reply->isRunning() 就可以 本帖最后由 隐藏英雄 于 2023-2-6 17:26 编辑
MarioCrane 发表于 2023-2-6 16:20
QNetworkReply::isRunning()
QNetworkReply::isFinished()
可以判断是否完成
是我没有讲清楚,不好意思。
流程是这样的,鼠标点击控件+传入参数---判断是否正在下载----创建并开始下载产生reply----下载中----下载完成--删除网络reply 置空网络 隐藏英雄 发表于 2023-2-6 16:55
是我没有讲清楚,不好意思。
流程是这样的,鼠标点击控件+传入参数---判断是否正在下载----创建并开始下 ...
那你的疑惑是哪里呢,你不是想要判断当前是不是正在下载吗? MarioCrane 发表于 2023-2-6 17:28
那你的疑惑是哪里呢,你不是想要判断当前是不是正在下载吗?
对的但是在判断那里使用reply的话第一次点击的时候由于reply 还没有产生会导致程序奔溃 隐藏英雄 发表于 2023-2-6 17:29
对的但是在判断那里使用reply的话第一次点击的时候由于reply 还没有产生会导致程序奔溃
你可以把每次下载产生的reply放到一个vector或者list里面,每次点按钮遍历判断下状态。完成的就从list移除 先研究一下qt自带的示例再来问吧,下载完成会发信号的 本帖最后由 隐藏英雄 于 2023-2-6 20:21 编辑
2370177068 发表于 2023-2-6 19:53
先研究一下qt自带的示例再来问吧,下载完成会发信号的
大佬请看一下5楼 有什么好的办法吗下载完成发的信号,在没产生下载的时候怎么用? 我在没下载之前就需要做判断 这个逻辑我有点不明白
页:
[1]
2