프로그래밍/Qt

폼안에 쓰레드 호출 함수 넣기

Dev-Drake 2019. 6. 11. 14:21
반응형

// thread.h
#include <QThread>

class Control_Thread : public QThread
{
    Q_OBJECT

private:
    bool bActive;

public:
    explicit Control_Thread(QObject *parent = 0);
    void run();
    void ThreadStop();

signals:
    void FormControl(); // 폼에서 호출할 함수 
};

 // thread.cpp
Control_Thread::Control_Thread(QObject *parent) : QThread(parent)
{
    bActive = true;
}

void Control_Thread::run()
{
    QMutex mutex;

    while(bActive) {
        mutex.lock();
        emit FormControl(); 
        mutex.unlock();
    }
}

void Control_Thread::ThreadStop()
{
    bActive = false
}

 // form.h
class MainWindow : public QMainWindow
{
    Q_OBJECT

private:
    Ui::MainWindow  *ui;
    Control_Thread  *ControlThread;

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void FormControl();
};

// form.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ControlThread = new Control_Thread(this);
    connect(ControlThread, SIGNAL(FormControl()), this, SLOT(FormControl())); //  연결
    ControlThread->start();
}

MainWindow::~MainWindow()
{
    ControlThread->ThreadStop();
    ControlThread->wait();

    delete ControlThread;
    delete ui;
}

void MainWindow::FormControl()
{
       // 반복 기능 구현 
}

 

반응형