很重要--转载声明
- 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
- 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。
Posted 朝十晚八
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 窗口动画相关的知识,希望对你有一定的参考价值。
一个应用程序通常包含多个动画,例如,你可能希望同时移动许多graphic items或者一个个按照串行的方式的移动他们
QAnimationGroup:动画组父类,以包含其它animations,这样这些animations可以串行或者并行的触发了
QSequentialAnimationGroup:串行动画
QParallelAnimationGroup:并行动画
QPropertyAnimation:动画类,第二个参数代表窗口树形,可以为size、windowOpacity、gemotry等等
1、淡入淡出
构造函数中写入如下代码:
1 animation = new QPropertyAnimation(this, "windowOpacity"); 2 3 animation->setDuration(3000);//动画总时间 4 5 animation->setStartValue(1);//开始不透明 6 7 animation->setEndValue(0);//接触时透明 8 9 animation->setEasingCurve(QEasingCurve::Linear);//渐变时间曲线 10 11 connect(animation, &QPropertyAnimation::finished 12 13 , this, [this]{close(); });//动画结束关闭窗口
setStartValue方法和setEndValue方法的参数依据类构造函数中的propertyName参数,即第二个参数
常用方法:
start:启动动画
pause:暂停动画
stop:停止动画
setKeyValueAt(qreal, const QVariant &),插入关键数据,到了参数1指定的位置,会出现参数2的状态
setCurrentTime(int):设置当前动画时间
setDirection(Direction):动画方向,Forward、Backward
stateChanged(QAbstractAnimation::State, QAbstractAnimation::State):状态改变信号
2、最小化时逐渐缩小
注意:应该在窗口外部使用,而不是构造函数中
1 QPropertyAnimation *minimumAnimation = 2 3 new QPropertyAnimation(videoWidget, "geometry"); 4 5 minimumAnimation->setDuration(200); 6 7 minimumAnimation->setEndValue( 8 9 QRect(mapToGlobal(pos()).x() + videoCount * videoWidget->width() 10 11 , mapToGlobal(pos()).y(), 0, 0) 12 13 ); 14 15 minimumAnimation->start();
以上是关于qt 窗口动画的主要内容,如果未能解决你的问题,请参考以下文章