Qt5 Работа с таймером

Работа с таймером в Qt5

Qt

Запрограммируем движение кнопки по горизонтали. Пуск и пауза такого процесса будут инициироваться кликом по этой самой кнопке. После первого клика кнопка каждую секунду будет смещаться вправо на 10 единиц.

В заголовочный файл mainwindow.h добавим:
а) строку #include <QTimer>;
б) в описание класса MainWidow

и слоты

Полный код mainwindow.h:

В файле mainwindow.cpp добавим в конструктор MainWindow::MainWindow(QWidget *parent) код создания таймера и связку стандартного сигнала timeout() и нашего слота do_timer().

Теперь таймер будет периодически вызывать код слота do_timer(). Период определяется в миллисекундах при вызове таймера с помощью метода start(int msec). Еще пригодятся функция isActive(), возвращающая true, если таймер включен, и функция stop().

Осталось определить, что будет происходить каждые 50 миллисекунд после включения таймера:

Как видим, кнопка перемещается в новую точку, координата x которой на 10 больше соответствующей координаты до перемещения.

При движении кнопки, то есть при работе таймера, форма не зависает и по-прежнему доступна для команд пользователя. Другими словами, таймер работает асинхронно.

Задача решена.

Класс QTimer содержит статический метод singleShot(), с помощью которого можно запустить таймер без создания объекта.

В Qt5 есть еще встроенный таймер в QObject, поэтому каждый класс, унаследованный от QObject, допускает вызов метода QObject::startTimer().

все материалы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *