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();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《Qt 学习之路 2》原文地址 Qt跨平台策略 GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等...
    CharlesZhangCh阅读 2,060评论 0 5
  • 为什么在头文件中有的是使用前置声明,而有的是包含头文件? 如下代码: 前置声明(forward declarati...
    Joe_HUST阅读 1,329评论 0 6
  • 2.概览 本章将介绍如果开始使用 Qt 5 进行开发。将展示如何安装 Qt SDK,以及如何使用 Qt Creat...
    赵者也阅读 1,540评论 3 2
  • 简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部...
    YBshone阅读 5,373评论 0 5
  • 基于QGC3.3.0(翻译的很烂) 本指南解释了QGroundControl(QGC)如何在内部工作,并提供了为项...
    LookingFeng阅读 11,450评论 0 3