Использование таймера в Qt

Для использования таймера в Qt предназначен класс QTimer. Сначала надо задать время, по истечении которого он будет срабатывать. Так же нужно определить слот, который обработает сигнал, излученный в следствие переполнения таймера. Таким образом, обязательным условием использования QTimer есть возможность использования сигналов и слотов, значит, класс, в котором используется таймер должен быть наследником QObject. Для примера создадим простенькие часы.

В классе, который является наследником QObject (для примера используем стандартный класс главного окна ) объявляем экземпляр QTimer и слот для обработки:

#include<QTimer>

class MainWindow: public QMainWindow { Q_OBJECT public: QTimer *timer; ...

public slots: //Слот, который срабатывает при переполнении таймера void timer_overflow();

...

};

//Подключаем класс для определения текущего времени #include <QTime>

Дальше, в конструкторе окна

 //Выводим значение времени в начале работы для устранения отсутствия времени 
 до первого срабатывания таймера
 ui->label->setText(QTime::currentTime().toString());
 timer = new QTimer;

//Связываем сигнал переполнения таймера со слотом QObject::connect(timer,SIGNAL(timeout()), this, SLOT(timer_overflow()));

//Задаем время срабатывания таймера (в мс) timer->start(1000); }

//Следующий метод (слот) вызывется при каждом переполнении таймера void MainWindow::timer_overflow() { //Обновляем значение времени на форме ui->label->setText(QTime::currentTime().toString()); }

 

В итоге получили "часы":

screen Исходники проекта можно скачать здесь