qt 窗口动画

窗口动画

编辑删除转载 2015-10-10 14:50:27
标签: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(); });​//动画结束关闭窗口
View Code

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();
View Code

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值