센서값을 수집해서 실시간으로 실행창에서 최신화하고 갱신하는 방법에 대해 소개해 드리겠습니다.
먼저 QThread를 상속받는 클래스를 하나 만들어 줍니다.
생성된 qTh.h 파일에 소스코드를 아래와 같이 써줍니다.
#ifndef QTH_H
#define QTH_H
#include <QThread>
class qTh : public QThread
{
Q_OBJECT
public:
explicit qTh(QObject* parent = 0);
private:
void run(); // QThread 실행
signals:
void setValue(int tmp);
};
#endif // QTH_H
qTh.cpp 파일도 아래와 같이 써줍니다.
signal에 setValue라는 함수를 만들어 줬습니다. setValue의 사용은 아래 ui의 cpp 파일의 connect 함수에서 사용합니다.
#include "qth.h"
qTh::qTh(QObject *parent) : QThread(parent)
{
}
void qTh::run()
{
while(1)
{
int tmp = function();
emit setValue(tmp);
sleep(1);
}
}
run() 함수의 while(1)안에 센서값을 받아오고 받아온 센서값을 emit setValue()를 통해 Ui로 전달해 줍니다.
그리고 기존에 있던 Ui 파일(저는 dialog.h / dialog.cpp)에 아래처럼 수정해줍니다.
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include "qth.h"
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void showValue(int tmp);
private:
Ui::Dialog *ui;
qTh* qthread;
};
#endif // DIALOG_H
여기선 slots에 showValue라는 함수로 이름을 지었습니다.
이제 마지막으로 cpp 파일을 수정하면
#include "dialog.h"
#include "ui_dialog.h"
#include "qth.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
qthread = new qTh(this);
connect(qthread, SIGNAL(setValue(int)), this, SLOT(showValue(int)));
qthread->start();
}
void Dialog::showValue(int tmp)
{
ui->tempValue->setText(QString::number(temp));
ui->tempValue->setAlignment(Qt::AlignCenter);
}
Dialog::~Dialog()
{
delete ui;
}
connect 함수를 이용해 setValue 함수와 showValue 함수를 연결해 setValue에서 넘어온 값을 showValue를 통해 ui의 label의 text를 수정해 주는 파일입니다.
저기서 setAlignment 함수는 text를 정렬해주는 함수이고 Qt::AlignCenter로 가운데 정렬을 해주었습니다.
아래 실행화면은 제가 위 함수에서 항목 몇가지를 추가하여 사용하고 있는 화면입니다.
온습도 미세먼지 센서 값을 수집해서 실시간으로 최신화 되고 있습니다.
자세한 코드는 아래 링크에서 확인하실 수 있습니다.
https://github.com/psy1064/DJU_OSP/tree/master/Raspberry
'Programming > Qt' 카테고리의 다른 글
Qt 클릭 이벤트 만들기 (0) | 2020.04.10 |
---|---|
Qt 데이터베이스(maria db) 연동해서 사용하기 (0) | 2020.03.13 |
Qt Tcp 소켓통신하기(서버) (0) | 2019.11.20 |
Qt QLabel에 사진 넣기 (0) | 2019.11.07 |
Qt 라이브러리 추가하기 (0) | 2019.10.11 |