QT: обработчик события таймера и часы в заголовке окна
Создав приложение на основе шаблона QWidget, пропишем в widget.h
обработчик события таймера и идентификатор для него:
private: Ui::Widget *ui; //Эта строка автосгенерирована, пишем после неё virtual void timerEvent (QTimerEvent *); int timerId; //метка активности таймера
В конструкторе виджета из файла widget.cpp
укажем, что таймер должен быть запущен с периодом 1 секунда (1000 миллисекунд), а в деструкторе остановим таймер (код показан вместе с автоматически сгенерированным):
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); timerId = QObject::startTimer(1000); //запуск } Widget::~Widget() { delete ui; QObject::killTimer(timerId); //остановка }
Нам останется написать и добавить в файл widget.cpp
сам обработчик события таймера, который будет брать текущее время и выводить его в нужном формате в строку заголовка окна виджета:
void Widget::timerEvent(QTimerEvent *e) { //Обработчик события if (e->timerId() == timerId) { QTime time = QTime::currentTime(); this->setWindowTitle(time.toString("hh:mm:ss")); } }
Это всё, приложение можно собирать. В этой заметке есть пример побольше, с бегущей строкой.
11.03.2019, 13:55 [1790 просмотров]