БлогNot. QT: обработчик события таймера и часы в заголовке окна

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 [1727 просмотров]


теги: программирование время qt

К этой статье пока нет комментариев, Ваш будет первым