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