我们可以在主线程中下载文件,但当文件较大时,很有可能引起页面卡顿,这时候当然建议在子线程中进行文件的下载。
而在子线程中,我发现程序并不能正确执行,下面这些信号没有发出。
connect(reply, &QNetworkReply::finished, this, &download_file::on_finished);
connect(reply, &QNetworkReply::readyRead, this, &download_file::on_readyRead);
connect(reply, &QNetworkReply::downloadProgress, this, &download_file::on_downloadProgress);
参考:QNetworkAccessManager 放到线程中---finished信号不触发_qnetworkreply::finished不触发-CSDN博客解决方案:
void download_thread::run()
{
qDebug() << "download_thread:" << QThread::currentThreadId();
//下载zip到指定目录
if (d == nullptr) {
d = new download_file(url, path);
d->sendRequest();
}
this->exec();
}
this->exec();文章来源:https://www.toymoban.com/news/detail-806403.html
在run()函数中添加this->exec();即可文章来源地址https://www.toymoban.com/news/detail-806403.html
到了这里,关于Qt在子线程中下载文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!