Qt同时实现多个动画效果
翻到了以前写过的一个图书管理系统,里面用到的Qt的动画
在登录的时候实现按钮淡出的效果,同时移动pos和改变opacity,
声明一个QParallelAnimationGroup对象,将多个动画效果添加到group里面,再对对象进行start,就能实现多个动画效果同时进行
代码如下
void LoginWidget::initAnimation()
{
anima = new QParallelAnimationGroup;
for (int i = 0; i < ToolGroup.size(); i++)
{
QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect;
effect->setOpacity(1);
ToolGroup[i]->setGraphicsEffect(effect);
QPoint point;
point = ToolGroup[i]->pos();
point.setY(point.y()-400);
QPropertyAnimation *animation1 = new QPropertyAnimation(ToolGroup[i], "pos");
animation1->setDuration(500);
animation1->setStartValue(ToolGroup[i]->pos());
animation1->setEndValue(point);
QPropertyAnimation *animation = new QPropertyAnimation(effect, "opacity");
animation->setDuration(500);
animation->setStartValue(1);
animation->setEndValue(0);
anima->addAnimation(animation);
anima->addAnimation(animation1);
}
}
anima->start();
由于是写的基于C/S的图书管理系统,为了方便看效果,改成了点击登录按钮就开始淡出动画
实现效果如下