!190 fix: downloadController 修改为懒汉式单例

fix: downloadController 修改为懒汉式单例
This commit is contained in:
忘记、过去 2023-02-18 16:56:12 +00:00 committed by Gitee
commit 0001df153b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

View File

@ -5,6 +5,8 @@
#include <QDebug> #include <QDebug>
#include <QtConcurrent> #include <QtConcurrent>
DownloadListWidget::DownloadListWidget(QWidget *parent) : DBlurEffectWidget(parent), DownloadListWidget::DownloadListWidget(QWidget *parent) : DBlurEffectWidget(parent),
ui(new Ui::DownloadListWidget) ui(new Ui::DownloadListWidget)
{ {
@ -58,7 +60,7 @@ DownloadListWidget::~DownloadListWidget()
{ {
downloadController->disconnect(); downloadController->disconnect();
downloadController->stopDownload(); downloadController->stopDownload();
downloadController->deleteLater(); // 这里没有释放 downloadController使用懒汉式单例
} }
clearItem(); clearItem();
@ -116,13 +118,20 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
isdownload = true; isdownload = true;
downloaditemlist[allDownload - 1]->free = false; downloaditemlist[allDownload - 1]->free = false;
// 使用懒汉式单例来存储downloadController
if (downloadController == nullptr)
{
downloadController = new DownloadController; // 并发下载,在第一次点击下载按钮的时候才会初始化
}
if (downloadController) if (downloadController)
{ {
downloadController->disconnect(); downloadController->disconnect();
downloadController->stopDownload(); downloadController->stopDownload();
downloadController->deleteLater();
} }
downloadController = new DownloadController; // 并发下载,在点击下载按钮的时候才会初始化
connect(downloadController, &DownloadController::downloadProcess, this, &DownloadListWidget::updateDataReadProgress); connect(downloadController, &DownloadController::downloadProcess, this, &DownloadListWidget::updateDataReadProgress);
connect(downloadController, &DownloadController::downloadFinished, this, &DownloadListWidget::httpFinished); connect(downloadController, &DownloadController::downloadFinished, this, &DownloadListWidget::httpFinished);
// connect(downloadController, &DownloadController::errorOccur, this, [=](QString msg){this->sendNotification(msg);}); // connect(downloadController, &DownloadController::errorOccur, this, [=](QString msg){this->sendNotification(msg);});