QTimer
Что такое QTimer?
QTimer — это класс в Qt, который позволяет запускать события через определенные интервалы времени. Он часто используется для периодических задач или задержек, таких как обновление интерфейса, выполнение фоновых задач или создание анимаций.
Принципы работы с QTimer
QTimer работает путем создания таймера, который генерирует сигнал timeout()
через заданные интервалы времени. Этот сигнал можно связать с любым слотом, чтобы выполнить необходимое действие при срабатывании таймера.
Основные функции QTimer:
- start(int msec): Запускает таймер на указанный интервал в миллисекундах.
- stop(): Останавливает таймер.
- setInterval(int msec): Устанавливает интервал для таймера.
- isActive(): Проверяет, работает ли таймер в данный момент.
Пример использования
Пример использования QTimer для обновления метки каждую секунду:
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QVBoxLayout>
#include <QTimer>
#include <QTime>
class TimerWidget : public QWidget {
Q_OBJECT
public:
TimerWidget(QWidget *parent = nullptr) : QWidget(parent) {
QVBoxLayout *layout = new QVBoxLayout(this);
label = new QLabel("Current Time:", this);
timeLabel = new QLabel(this);
layout->addWidget(label);
layout->addWidget(timeLabel);
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &TimerWidget::updateTime);
timer->start(1000); // обновление каждую секунду
updateTime();
}
public slots:
void updateTime() {
timeLabel->setText(QTime::currentTime().toString("hh:mm:ss"));
}
private:
QLabel *label;
QLabel *timeLabel;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
TimerWidget window;
window.show();
return app.exec();
}
В этом примере создается виджет с меткой, которая обновляется каждую секунду, показывая текущее время.
Заключение
QTimer является мощным инструментом для управления временем в Qt-приложениях. Он позволяет легко создавать периодические задачи и обрабатывать события через заданные интервалы, что делает его незаменимым для многих приложений, требующих регулярного обновления данных или выполнения повторяющихся действий.