当前位置:   article > 正文

qt 动画(界面跳转进场动画)_qt界面过渡动画

qt界面过渡动画
  1.  目标:     做上位机软软件的时候,觉得QTabWidget的每个tab跳转时候,单纯的界面显示太过单调,希望有界面上面的控件有一个进场的动画效果。
  2. 效果:    
  3. 实现  : 通过动画QPropertyAnimation把设置单个控件动画效果,在用组合动画类QSequentialAnimationGroup顺序执行。            
    1. void MainWindow::addAnimationWidget(QSequentialAnimationGroup *Animation,QPushButton *widget)
    2. {
    3. int Durtime = 200;
    4. int startX = 600;
    5. if(!widget->isHidden())
    6. {
    7. QPropertyAnimation *pScaleAnimation = new QPropertyAnimation(widget, "pos");
    8. pScaleAnimation->setDuration(Durtime);
    9. pScaleAnimation->setStartValue(QPoint(200, widget->y()));
    10. pScaleAnimation->setEndValue(QPoint(widget->x(),widget->y()));
    11. pScaleAnimation->setEasingCurve(QEasingCurve::Linear);
    12. Animation->addAnimation(pScaleAnimation);
    13. widget->move(startX,widget->y());
    14. }
    15. }
    16. void MainWindow::on_currentChanged(int indexs)
    17. {
    18. if(Animation->state()==QSequentialAnimationGroup::Running){
    19. Animation->pause();
    20. Animation->resume();
    21. return;
    22. }
    23. Animation->clear();
    24. if(indexs ==0)
    25. {
    26. this->addAnimationWidget(Animation,ui->btn_1);
    27. this->addAnimationWidget(Animation,ui->btn_2);
    28. this->addAnimationWidget(Animation,ui->btn_3);
    29. this->addAnimationWidget(Animation,ui->btn_4);
    30. }
    31. else
    32. {
    33. this->addAnimationWidget(Animation,ui->btn_5);
    34. this->addAnimationWidget(Animation,ui->btn_6);
    35. this->addAnimationWidget(Animation,ui->btn_7);
    36. this->addAnimationWidget(Animation,ui->btn_8);
    37. }
    38. Animation->start();
    39. }
  4. 异常: 实际的项目中,经常会把tab widget每个tab的界面单独拿出来,这个时候需要需要调用showEvent,延迟十毫秒调用添加动画的槽函数,否则当外部有数据改变界面控件的数值,点击tab跳转过来,有时候会出现动画效果没有出来的情况。

下载:源码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/81538
推荐阅读
相关标签
  

闽ICP备14008679号