...
Code Block |
---|
#ifndef DIALOGI_H #define DIALOGI_H #include <QDialog> #include "saie.h" namespace Ui { class Dialogi; } class Dialogi : public QDialog { Q_OBJECT public: Dialogi(QWidget *parent = 0); ~Dialogi(); Saie saie; //bool started; protected: void changeEvent(QEvent *e); private: Ui::Dialogi *ui; private slots: void on_StopSaie_clicked(); void on_StartSaie_clicked(); void on_pushButton_clicked(); void VastaanotaArvoSaikeelta(int); signals: void AsetaTestiarvo(int); }; #endif // DIALOGI_H |
Code Block |
---|
#include "saie.h"
#include <QDebug>
Saie::Saie(QObject *parent) :
QThread(parent)
{
Testiarvo=0;
runTimer.start();
uiTimer.start();
SaieStop=false;
jaksoaika=1;
ui_paivitysaika=10;
}
// tällä saadaan saie pysaytettya
void Saie::pysayta()
{
SaieStop=true;
}
void Saie::AsetaTestiarvo(int arvo)
{
//suojataan mutexilla sijoitus atomiseksi operaatioksi
QMutexLocker locer(&mutex);
Testiarvo=arvo;
}
void Saie::run()
{
int arvo;
QString msg;
forever
{
if (runTimer.elapsed() > jaksoaika)
{
runTimer.restart();
Testiarvo++;
Testiarvo=Testiarvo+3;
if(uiTimer.elapsed()>ui_paivitysaika)
{
uiTimer.restart();
emit PaivitaUi(Testiarvo);
msg.setNum(Testiarvo);
qDebug()<< msg;//debug informaatiota appöication output ikkunaan
}
}
if(SaieStop==true){break;}
}
SaieStop=false;
}
|
Code Block |
---|
#ifndef SAIE_H
#define SAIE_H
#include <QThread>
#include <QTime>
#include <QMutex>
class Saie : public QThread
{
Q_OBJECT
public:
explicit Saie(QObject *parent = 0);
int Testiarvo;
bool SaieStop;
QTime runTimer;
QTime uiTimer;
int jaksoaika;
int ui_paivitysaika;
void pysayta();
QMutex mutex;
protected:
//! run function for own real-time thread
void run();
signals:
void PaivitaUi(int);
public slots:
void AsetaTestiarvo(int arvo);
};
#endif // SAIE_H
|