From 3f2404ec1cd994256e22fc7a4d9e960d424eb541 Mon Sep 17 00:00:00 2001 From: uniartisan Date: Sun, 19 Feb 2023 00:45:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20downloadController=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=87=92=E6=B1=89=E5=BC=8F=E5=8D=95=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/widgets/downloadlistwidget.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/widgets/downloadlistwidget.cpp b/src/widgets/downloadlistwidget.cpp index 07d7046..6e887f3 100644 --- a/src/widgets/downloadlistwidget.cpp +++ b/src/widgets/downloadlistwidget.cpp @@ -5,6 +5,8 @@ #include #include + + DownloadListWidget::DownloadListWidget(QWidget *parent) : DBlurEffectWidget(parent), ui(new Ui::DownloadListWidget) { @@ -58,7 +60,7 @@ DownloadListWidget::~DownloadListWidget() { downloadController->disconnect(); downloadController->stopDownload(); - downloadController->deleteLater(); + // 这里没有释放 downloadController,使用懒汉式单例 } clearItem(); @@ -116,13 +118,20 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName) isdownload = true; downloaditemlist[allDownload - 1]->free = false; + + // 使用懒汉式单例来存储downloadController + if (downloadController == nullptr) + { + downloadController = new DownloadController; // 并发下载,在第一次点击下载按钮的时候才会初始化 + } + + if (downloadController) { downloadController->disconnect(); downloadController->stopDownload(); - downloadController->deleteLater(); } - downloadController = new DownloadController; // 并发下载,在点击下载按钮的时候才会初始化 + connect(downloadController, &DownloadController::downloadProcess, this, &DownloadListWidget::updateDataReadProgress); connect(downloadController, &DownloadController::downloadFinished, this, &DownloadListWidget::httpFinished); // connect(downloadController, &DownloadController::errorOccur, this, [=](QString msg){this->sendNotification(msg);});