Skip to content

QTimer

Что такое QTimer?

QTimer — это класс в Qt, который позволяет запускать события через определенные интервалы времени. Он часто используется для периодических задач или задержек, таких как обновление интерфейса, выполнение фоновых задач или создание анимаций.

Принципы работы с QTimer

QTimer работает путем создания таймера, который генерирует сигнал timeout() через заданные интервалы времени. Этот сигнал можно связать с любым слотом, чтобы выполнить необходимое действие при срабатывании таймера.

Основные функции QTimer:

  • start(int msec): Запускает таймер на указанный интервал в миллисекундах.
  • stop(): Останавливает таймер.
  • setInterval(int msec): Устанавливает интервал для таймера.
  • isActive(): Проверяет, работает ли таймер в данный момент.

Пример использования

Пример использования QTimer для обновления метки каждую секунду:

cpp
#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-приложениях. Он позволяет легко создавать периодические задачи и обрабатывать события через заданные интервалы, что делает его незаменимым для многих приложений, требующих регулярного обновления данных или выполнения повторяющихся действий.

Содержание доступно по лицензии MIT