Qt在子线程中下载文件

发布时间:2024年01月15日

我们可以在主线程中下载文件,但当文件较大时,很有可能引起页面卡顿,这时候当然建议在子线程中进行文件的下载。

而在子线程中,我发现程序并不能正确执行,下面这些信号没有发出。

    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();

在run()函数中添加this->exec();即可

文章来源:https://blog.csdn.net/weixin_51883798/article/details/135604185
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。