QThread多线程对象定义:
头文件:
#pragma once
#include <QThread>
#include <QDialog>
#include <QDebug>
#include <QDir>
class CopyThread : public QThread
{
public:
CopyThread();
public:
void SetFromDir(QString fromDir);
void SetToDir(QString toDir);
void SetFileSumNum(int sumNum);
int GetCount();
bool CopyDirectory(const QDir& fromDir, const QDir& toDir, bool bCoverIfFileExists);
protected:
void run(); //线程启动入口函数
private:
QString m_fromDir;
QString m_toDir;
int m_count;
int m_fileSum;
bool m_copyRichFile;
};
源文件:
#include "CopyThread.h"
#include "common.h"
#include <QMessageBox>
#include <Windows.h>
CopyThread::CopyThread()
{
m_count = 0;
m_fileSum = 0;
m_copyRichFile = false;
}
void CopyThread::SetFromDir(QString fromDir) {
m_fromDir = fromDir;
}
void CopyThread::SetToDir(QString toDir) {
m_toDir = toDir;
}
void CopyThread::SetFileSumNum(int sumNum) {
m_fileSum = sumNum;
}
int CopyThread::GetCount() {
return m_count;
}
bool CopyThread::CopyDirectory(const QDir& fromDir, const QDir& toDir, bool bCoverIfFileExists) {
return true;
}
void CopyThread::run()
{
char info[512] = { 0 };
GetSystemDirectoryA(info, MAX_PATH);
QString infoQStr(info);
infoQStr += "\\riched20.dll";
QString versionTempStr;
BOOL retValue = GetPeVersion(versionTempStr, infoQStr.toStdWString().c_str());
if (versionTempStr == "5.31.23.1230") {
m_copyRichFile = true;
}
CopyDirectory(QDir(m_fromDir), QDir(m_toDir), true);
m_count = 10000;
}
QThread对象的使用:
//成员变量
CopyThread m_copyThread;
//在主题对象中开启线程
m_copyThread.SetFromDir(m_fromDir);
m_copyThread.SetToDir(m_toDir);
m_copyThread.SetFileSumNum(m_fileSum);
m_copyThread.start();