QT多线程使用

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();

猜你喜欢

转载自blog.csdn.net/Best_ZYJ/article/details/81463212
今日推荐