Qt线程池的简单使用

简介

以下是一个用于文件复制的简单线程池,一并使用了事件循环来防止界面卡死,实际效果就是在拷贝大文件,多文件时还是会卡死.效果并不算好.

声明

class CopyTask : public QObject, public QRunnable

{

Q_OBJECT


public:

CopyTask(const QString& a, const QString& b)

{

oldfilename = a;

newfilename = b;

}

~CopyTask()

{}

protected:

void run()

{

QFile::copy(oldfilename,newfilename);

QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

}


signals:

private:

QString oldfilename,newfilename;

};

定义变量

QThreadPool *copytPool;

初始化

copytPool = new QThreadPool(this);

copytPool->setMaxThreadCount(5);//设置最大的活跃线程数

使用

copytPool->start(new CopyTask(QString("aaa.dll"), QString("bbb.dll")));

也可参看

  • https://github.com/chfyjy/QtWindeploy