Qt如何为QProgressBar设置动画?

时间:2018-07-02 17:41:53

标签: animation progress-bar qt5

在某些Qt 5样式(例如Breeze)中,处于不确定状态(最小==最大)的进度条会显示动画。

我想创建自己的进度窗口小部件,该窗口小部件在状态栏中使用的视觉足迹较小,因此我查看了QProgressBar的源代码以了解动画的实现方式。

令我惊讶的是,我没有在其中找到任何动画代码。没有计时器。没有事件过滤器。

该动画如何实现?

1 个答案:

答案 0 :(得分:0)

魔尘是QStyle::polish方法。在包括QProgressBar实例在内的小部件上调用它。

微风风格设置了自己的动画逻辑。进度条由Breeze::BusyIndicatorEngine处理。它使用QPropertyAnimation来提高自己的内部价值。

它的registerWidget方法是从Breeze风格的polish实现中调用的。依次将小部件保存在内部地图中。

通过动画更新内部值时,将迭代地图,并在当前正在动画化的所有窗口小部件上调用update(使用通过QMetaObject进行的间接调用)。