May 26, 2012 17:48
Забавный факт - в каждом QOBject есть встроенный таймер. И, кстати, qobject.cpp весит аж 146 kB.
Возникла такая задачка - есть несколько функций, во время работы которых требуется приостановить таймер главного окна. Из функций может быть несколько выходов (return'ов) поэтому управлять таймером вручную становится скучновато. Я придумал следующий фокус - может быть, даже есть такой паттерн? - создать класс, управляющий таймером формочки, примерно такой:
class StopTimer
{
Form f;
public:
StopTimer(Form *frm)
:f(frm)
{
f->killTimer(f->timerID);
}
~StopTimer()
{
f->timerID = f->startTimer(1000);
}
}
В области видимости объекта StopTimer таймер будет остановлен, а в конце области видимости будет снова запущен уже с новым id:
void Form::slotMakeSomethingImportant()
{
StopTimer st(this);
... // тут код, который не выбрасывает исключения, но может содержать много выходов по return
}
и вообще бред,
быдлокод,
qt