zoukankan      html  css  js  c++  java
  • QTimeLine 控制动画(一步一步的往前变化,并在每次变化时都会发出一个frameChanged信号)

    QTimeLine顾名思义表示一条时间线,即一个时间序列,该时间序列会按我们实现定义好的间隔一步一步的往前变化,并在每次变化时都会发出一个frameChanged()信号。所以,我们通常会使用该类来驱动我们的动画。

    下面,我们使用该类,来驱动一个进度条的变化。

    新建一个GUI程序,在窗口中拖入一个按钮和一个进度条。当点击按钮时,开始改变进度条的值。

    直接来看按钮的槽函数:

    void Widget::on_pushButton_clicked()
    {
    //创建对象
    QTimeLine *timeLine = new QTimeLine(10000, this);
    //设置变化模式,此处选择余弦形式
    timeLine->setCurveShape(QTimeLine::CosineCurve);
    //设置帧范围
    timeLine->setFrameRange(0, 100);

    connect(timeLine, SIGNAL(frameChanged(int)), ui->progressBar, SLOT(setValue(int)));
    //开始动画
    timeLine->start();
    }
    由于进度条的默认范围是0-100,所以我们也将帧范围设为0-100,便于观察。
    运行程序如下:

    当点击开始按钮后,可以看到进度条的值在0-100之间,已余弦规律变化,最后停在49%。

    至于其他的变化模式,大家可以自己逐个实验,选择一个符合项目需求的即可。每一个模式在QTimeLine类中,声明如下:

    QTimeLine::EaseInCurve
    QTimeLine::EaseOutCurve
    QTimeLine::EaseInOutCurve
    QTimeLine::LinearCurve
    QTimeLine::SineCurve
    QTimeLine::CosineCurve
    ---------------------
    作者:求道玉
    来源:CSDN
    原文:https://blog.csdn.net/Amnes1a/article/details/70209396
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    转: sublime text常用插件和快捷键
    转: markdown基本语法
    sqlite详细介绍
    webpack配置babel-loader
    vue骨架屏以及seo优化
    路由滚动行为
    anywhere随启随用的静态文件服务器
    node.js http-server 搭建本地服务器
    vuex中mutations数据响应
    vue项目开发优化
  • 原文地址:https://www.cnblogs.com/findumars/p/10247640.html
Copyright © 2011-2022 走看看