Мне stackoverflow не помог (вопрос: http://stackoverflow.com/questions/18551394/many-qpropertyanimation-instances... ), придётся спросить у настоящих мужиков на ЛОРе.
Вопрос такой.
Я понимаю, что QPropertyAnimation сделан, чтобы за меня вычислять значение какой-либо проперти на момент времени тика таймера. Но мне понадобилась анимация бесконечной длины, поэтому я поставил длину анимации - 1 сек, задал бесконечное число повторений = -1, а на значение проперти забил болт и стал использовать QPropertyAnimation тупо как источник относительно равномерно происходящих тиков. В обработчике тика заглядываю в таймер QElapsedTimer и сам считаю значение всех нужных параметров для данного момента времени.
Раньше в этой роли бы QTimer, но под Linux и Windows он вёл себя по-разному: интервал 1000/30 стучал с разной частотой, приходилось ставить 1000/60 под виндой, чтобы добиться минимально нужной частоты, но тогда проц жрало сильнее. Получался некрасивый код с #ifndef-ами. QPropertyAnimation в роли тупого таймера ведёт себя гораздо лучше, хотя он долбит в районе 60fps под обоими платформами. Плюс к этому, как я понимаю, QPropertyAnimation не насилует механизм сигналов-слотов, а просто вызывает QObject::setProperty() напрямую - экономия ЦП (или я гоню?)
В общем, всё было бы хорошо, но тут понадобилось анимировать N разных виджетов. В одном чё-то там затемняется, во втором что-то движется, в третьем чё-то крутится.
«создам прокси-объект, пускай его дёргает мой бесконечный QPropertyAnimation, а этот прокси-объект пускай дёргает все N-виджетов за новый метод void animTrigger(uint64_t _currtime)» - подумал я.
Зачем я так подумал? Почему мне не нравится создание 10 независимых QPropertyAnimation? Потому что если я их запущу с интервалом в 5 ms, то каждый будет тикать независимо, отмеряя свои ~17ms (60 тиков/сек) и общая плотность таких тиков в программе будет куда больше 60 в секунду. 2 работающих асинхронных QPropertyAnimation - это уже 120.
Или я загнался и работают они гарантированно синхронно? Т.е. сколько бы я объектов QPropertyAnimation ни создавал, тикать они всё равно будут в один и тот же момент и никаких 100500 тиков в секунду я не огребу? Ответьте кто знает. Но даже если это и так, зачем я буду напрягать Qt 10...100 объектами, если мне хватает 1? Но про синхронность всё равно напишите - любопытно.