我QPropertyAnimation
只是用作蜱的来源。我设置了 1 秒的动画,无限数量的循环,调用start()
然后在“tick 处理程序”中观看 QElapsedTimer::elapsed() 以了解从动画开始经过了多少时间。所以,我不依赖循环计数、动画开始和停止值,也不关心正在动画的属性值。只是蜱虫的来源!
在此之前,我使用QTimer
它在 Linux 和 Windows 上给出了不同的结果:为了在 Linux 中平滑动画,我必须使用QTimer
间隔 = 1000/30,但对于 Windows 1000/60 是最小值。所以我不得不使用#ifndef,但这是一个肮脏的代码。除此之外,QTimer 使用信号槽机制,但 QPropertyAnimation 没有,所以我的 QApplication 事件循环不忙于动画事件(我正确吗?)
现在我需要为N
小部件制作动画(每个小部件都有不同类型的动画),并且我将以相同的方式使用 QPropertyAnimation - 作为相同的愚蠢来源。
这些变体之间的 CPU 成本差异是什么:
N
运行QPropertyAnimation
实例,每个实例都连接到自己的小部件;Qt 文档说,QPropertyAnimation
在滴答声之间以大约 60fps = ~17 ms 的速度滴答作响。但是 Qt 不能同时从N
不同的QPropertyAnimation
实例触发滴答声,因为您可能在不同的 time() 开始了这些动画 - 假设QPropertyAnimation::start()
.QPropertyAnimation
1 个连接到某种代理对象的单个运行实例,该代理对象将滴答声传输到N
小部件;所有这些小部件都有一个成员 'animTick(void)' 。