티스토리 뷰

반응형

// 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()
{
       // 반복 기능 구현 
}

 

반응형

'프로그래밍 > Qt' 카테고리의 다른 글

QSerialPort  (0) 2019.06.11
QTcpSocket isConnected  (0) 2019.06.11
버튼으로 Edit 커서 이동  (0) 2019.06.11
int to QString  (0) 2019.06.11
gateway 정보 가져오기  (0) 2019.06.11
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday