×
Namespaces

Variants
Actions

Таймеры класса QObject

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Совместимость
Платформа(ы):
Symbian

Статья
Автор: Den123 (12 Jan 2009)
Последнее редактирование: hamishwillee (08 May 2013)

Класс QObject содержит встроенные таймеры, которые позволяют организовать периодическое повторение определенных действий. Для использования таймеров QObject содержит следующие методы:

  • int startTimer( int interval ) - в качестве параметра данный метод принимает количество миллисекунд (интервал задержки). Возвращается идентификатор созданного таймера, либо 0, если таймер запустить не удалось.
  • virtual void timerEvent( QTimerEvent* event ) - данный метод вызывается таймерами по истечению заданного интервала. Параметр event позволяет получить идентификатор вызывающего таймера.
  • void killTimer( int id ) - метод используется для уничтожения заданного таймера

Объект QObject позволяет создавать множество таймеров. При реализации потомка таймеры могут быть запущены следующим образом:

void MyObject :: beginPolling()
{
timer1 = startTimer( 1000 ); // каждую секунду
timer2 = startTimer( 60000 ); // каждую минуту
}

При этом виртуальный метод timerEvent() должен действовать в зависимости от идентификатора вызывающего таймера:

void MyObject :: timerEvent( QTimerEvent* event )
{
switch( event->timerId() )
{
case timer1:
// ежесекундное действие
break;
 
case timer2:
// ежеминутное действие
break;
 
default:
break;
}
}

Следует учитывать, что таймеры работают в рамках потока, в котором были созданы. Управление таймерами происходит в событийном цикле (event loop). При интенсивных вычислениях, при длительном выполнении различных событий, периодичность вызовов может быть нарушена.

Библиотека Qt содержит класс QTimer, который также можно использовать для организации периодически повторяемых действий. Использование QTimer во многом проще, чем поддержка событий таймера в QObject - в частности нет необходимости создавать собственного потомка QObject.

This page was last modified on 8 May 2013, at 03:00.
49 page views in the last 30 days.
×