Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

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

From 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 00:00.
46 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×