QTimeLine 控制动画

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章