Название: bool QTimer::isActive() особенности работы Отправлено: Roman_L от Июль 31, 2017, 13:17 Доброго времени суток!
Я столкнулся со следующей проблемой: вызов QTimer::isActive() возвращает значение, по всей видимости, вычисляемое в процессе обработки событий. В общем так или иначе, но код вида Код: do { Код
Код
Код выдаёт примерно следующее (всё как предполагается): Цитировать obj::obj timer::isActive() test: если раскомментировать строку //o.test();t2->isActive() = true , t2->remainingTime() = 699 t2->isActive() = true , t2->remainingTime() = 501 t2->isActive() = true , t2->remainingTime() = 295 t2->isActive() = true , t2->remainingTime() = 95 t2->isActive() = false , t2->remainingTime() = -1 t2 is time out. t2->isActive() = false , t2->remainingTime() = -1 t2->isActive() = false , t2->remainingTime() = -1 t2->isActive() = false , t2->remainingTime() = -1 t2->isActive() = false , t2->remainingTime() = -1 t3 is time out. выдача будет Цитировать obj::obj timer::isActive() test: Если сменить предка с QWidget на QObject и QApplication на QCoreApplication работать при раскомментированной строке //o.test(); будет t2rt = 900 t2isA = true t2rt = 699 t2isA = true t2rt = 496 t2isA = true t2rt = 292 t2isA = true t2rt = 89 t2isA = true t2rt = 0 t2isA = true t2rt = 0 t2isA = true t2rt = 0 t2isA = true obj::obj end test. t2->isActive() = true , t2->remainingTime() = 0 t2->isActive() = false , t2->remainingTime() = -1 t2 is time out. t2->isActive() = false , t2->remainingTime() = -1 t3 is time out. Цитировать obj::obj timer::isActive() test: Для себя, как видите, нашёл выход (QTimer::remainingTime() > 0), но хочется меньше натыкаться на подобное...t2rt = 0 t2isA = true obj::obj end test. t2->isActive() = true , t2->remainingTime() = 696 t2->isActive() = true , t2->remainingTime() = 498 t2->isActive() = true , t2->remainingTime() = 291 t2->isActive() = true , t2->remainingTime() = 91 t2->isActive() = false , t2->remainingTime() = -1 t2 is time out. t2->isActive() = false , t2->remainingTime() = -1 t2->isActive() = false , t2->remainingTime() = -1 t2->isActive() = false , t2->remainingTime() = -1 t2->isActive() = false , t2->remainingTime() = -1 t3 is time out. Название: Re: bool QTimer::isActive() особенности работы Отправлено: Roman_L от Июль 31, 2017, 13:32 всё так:
Код: inline bool isActive() const { return id >= 0; } Код: 652 int QTimer::remainingTime() const |