1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| #include <QtGui>
#include <QApplication>
#include <QPushButton>
#include <QTimer>
class TimerChrono : public QWidget
{
Q_OBJECT
private :
//Bouton servant de "Start" "Stop"
QPushButton* m_Bouton_StartStop;
QProgressBar* m_Progress;
int m_Timer_value;
//Timer servant de base à notre Chronomètre
QTimer* m_timer;
//Permet de savoir si l'utilisateur a cliqué sur "Start" ou "Stop"
bool validStart;
public :
TimerChrono()
{
//Creation des contrôles de types boutons
this->m_Bouton_StartStop = new QPushButton("Start",this);
this->m_Progress = new QProgressBar(this);
//Gestion du layout pour le placement des boutons
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(m_Progress);
layout->addWidget(m_Bouton_StartStop);
this->setLayout(layout);
//On met à zeros le compteur représentant le nombre de seconde
this->m_Timer_value=0;
//Création du timer
this->m_timer = new QTimer(this);
//A chaque fin d'interval execution de la fonction update()
connect(this->m_timer, SIGNAL(timeout()), this, SLOT(update()));
//On applique un interval d'une seconde (1000 ms) entre chaque timeout du timer
this->m_timer->setInterval(1000);
//Sert pour la gestion du bouton "Start" "Stop"
this->validStart=true;
this->m_Progress->setRange(0,100);
//On connecte les differents signaux et slots
connect(this->m_Bouton_StartStop, SIGNAL(clicked(bool)), this, SLOT(click_StartStop(bool)));
//Gestion de la taille de la fenêtre
resize(200, 150);
}
private slots:
//Fonction appellée toute les secondes par le QTimer
void update()
{ this->m_Timer_value++;
this->m_Progress->setValue(this->m_Timer_value);
}
//Bouton "Start" "Stop"
void click_StartStop(bool valid)
{
//Si on click sur "Start"
if(validStart == true)
{
//Affiche "Stop" sur le bouton
m_Bouton_StartStop->setText("Stop");
//Permet de savoir que le bouton est en mode "Strop"
validStart = false;
//On declanche le départ du Timer
this->m_timer->start();
}
else//Si on click sur "Stop"
{
//Affiche "Sart" sur le bouton
m_Bouton_StartStop->setText("Start");
//Permet de savoir que le bouton est en mode "Start"
validStart = true;
//On arrete le compteur
this->m_timer->stop();
this->m_Progress->setValue(0);
this->m_Timer_value=0;
}
}
};
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TimerChrono w;
w.show();
return a.exec();
} |
Partager