qt同时两个动画执行_Qt 动画应用

Qt的动画机制,能用在QWidget、QGraphicWidget、以及在QML中也有部分应用的模型,这里只是先举两个小的例子,目前也没有太深入研究。

以QPropertyAnimation为例,在Widget类中有另一个m_subWidget子类,点击按钮后,会以动画的形式显示出m_subWidget界面。

//定义槽连接

connect(btn,&QPushButton::clicked,this,[&](){

showAnimation();

});

void Widget::showAnimation()

{

m_subWidget->show();

QPoint pStart,pEnd;

pStart = mapToGlobal(QPoint(0-width(),0));

pEnd = mapToGlobal(QPoint(0,0));

animation = new QPropertyAnimation(m_subWidget, "geometry");

animation->setDuration(1000); //设置动画时间

animation->setStartValue(QRect(pStart, QSize(width(),height())));//设置动画开始位置

animation->setEndValue(QRect(pEnd, QSize(width(),height())));//设置动画结束位置

animation->setEasingCurve(QEasingCurve::SineCurve);

animation->start();

}

根据帮助文档的说明,QSequentialAnimationGroup可以将多个个动画关联起来,而QParallelAnimationGroup类则会同时展示多个动画。

QPushButton button("Animated Button");

button.show();

QPropertyAnimation anim1(&button, "geometry");

anim1.setDuration(3000);

anim1.setStartValue(QRect(0, 0, 100, 30));

anim1.setEndValue(QRect(500, 500, 100, 30));

QPropertyAnimation anim2(&button, "geometry");

anim2.setDuration(3000);

anim2.setStartValue(QRect(500, 500, 100, 30));

anim2.setEndValue(QRect(1000, 500, 100, 30));

QSequentialAnimationGroup group;

group.addAnimation(&anim1);

group.addAnimation(&anim2);

group.start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值