Qt - klasa QTimer czyli uruchamianie sygnału co określony odstęp czasu

Stronę tą wyświetlono już: 37 razy

Klasa QTimer jest typowym przykładem klasy biblioteki Qt, która wykorzystuje sygnały i sloty. Celem tej klasy jest umożliwienie wywołania podpiętego pod slot uruchamiany za pomocą sygnału timeout własnego sygnału utworzonego w obiekcie klasy.

Oto przykład klasy specjalnie przygotowanej do tego celu:

Plik qclock.h:

Listing 1
  1. #ifndef QCLOCK_H
  2. #define QCLOCK_H
  3. #include <QDebug>
  4. #include <QObject>
  5. #include <QTime>
  6. class QClock : public QObject
  7. {
  8. Q_OBJECT
  9. public:
  10. QClock();
  11. public slots:
  12. void tick();
  13. };
  14. #endif // QCLOCK_H

Plik qclock.cpp:

Listing 2
  1. #include "qclock.h"
  2. QClock::QClock()
  3. {
  4. }
  5. void QClock::tick(){
  6. qDebug() << QTime::currentTime().toString("hh:mm:ss");
  7. }

Na koniec utworzenie obiektu klasy QClock i QTimer w pliku main.cpp:

Listing 3
  1. #include <QCoreApplication>
  2. #include "qclock.h"
  3. #include <QTimer>
  4. int main(int argc, char *argv[])
  5. {
  6. QCoreApplication a(argc, argv);
  7. QClock *clock = new QClock(); // obiekt klasy QClock
  8. QTimer *timer = new QTimer(); // obiekt klasy QTimer
  9. timer->setInterval(1000); // ustawiam interwał czasowy na 1000 milisekund
  10. QObject::connect(timer, SIGNAL(timeout()), clock, SLOT(tick())); // podpinam pod sygnał timeout obiketu timer podpinam slot tick z obiektu QClock
  11. timer->start(); // uruchamiam zegar
  12. return a.exec();
  13. }

Przybliżony wynik działania powyższego kodu powinien być mniej więcej taki:

"17:00:00"
"17:00:01"
"17:00:02"
"17:00:03"
"17:00:04"
"17:00:05"
"17:00:06"
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qtimer.html - opis klasy QTimer w dokumentacji Qt

Komentarze