一、说明
在项目中经常会遇到文件的批量上传、下载等基本操作。这时候就需要将任务放到一个队列中,然后循环在子线程中执行任务。所以,这里来介绍一下该场景的框架设计,如何在子线程中执行耗时任务队列。
二、代码
#ifndef TASKLIST_H
#define TASKLIST_H
#include <QWidget>
#include <QThread>
#include <QList>
#include <QMutex>
#include <QUuid>
#include <QEventLoop>
#include <QTimer>
#include <QDebug>
#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
class TaskItem : public QObject
{
Q_OBJECT
public:
TaskItem(const QString& fileName,const QUrl& url,const QUuid& uuid,QObject* parent = nullptr);
~TaskItem();
bool download();
QUuid uuid(){
return m_uuid;}
signals:
void finish(QUuid uuid);
private:
QUrl m_url;
QUuid m_uuid;
QNetworkAccessManager *m_pMgr;
};
class fileDownloadWork : public QThread
{
Q_OBJECT
public:
fileDownloadWork(QObject *parent = nullptr);
~fileDownloadWork();
void run() override;
void stop(