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



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