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

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 4535 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:

#ifndef QCLOCK_H #define QCLOCK_H #include <QDebug> #include <QObject> #include <QTime> class QClock : public QObject { Q_OBJECT public: QClock(); public slots: void tick(); }; #endif // QCLOCK_H

Plik qclock.cpp:

#include "qclock.h" QClock::QClock() { } void QClock::tick(){ qDebug() << QTime::currentTime().toString("hh:mm:ss"); }

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

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

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
Propozycje książek