Russian Qt Forum

Qt => Общие вопросы => Тема начата: mishanja1988 от Апрель 18, 2009, 08:50



Название: таймер
Отправлено: mishanja1988 от Апрель 18, 2009, 08:50
Здравствуйте, помогите пожалуйста с таймером..
мне нужно, что бы он посекундно отсчитывал время назад и показывал это (например 40, 39, 38 и т.д.)
получилось только рекурсией, можно как-нибудь еще?


Название: Re: таймер
Отправлено: Rcus от Апрель 18, 2009, 09:04
Код
C++ (Qt)
int sduration = ...;
const int mss = 1000;
QTimeLine *tl = new QTimeLine(sduration * mss, this);
tl->setDirection(QTimeLine::Backward);
tl->setUpdateInterval(mss);
tl->setCurveShape(QTimeLine::LinearCurve);
tl->setFrameRange(0,sduration);
connect(tl, SIGNAL(frameChanged(int)), this, SLOT(on_framech(int)));
connect(tl, SIGNAL(finished()), tl, SLOT(deleteLater()));
tl->start();
 
в слот on_framech(int) будет приходить оставшееся время. Еще можно повесить обработчик на сигнал finished() чтобы что-то делать
UPD: можно заменить порядок аргументов в setFrameRange, тогда можно избавиться от setDirection :)


Название: Re: таймер
Отправлено: mishanja1988 от Апрель 18, 2009, 10:11
Спасибо большое, я все понял :)