1. 程式人生 > >QTimeLine 控制動畫(一步一步的往前變化,並在每次變化時都會發出一個frameChanged訊號)

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
版權宣告:本文為博主原創文章,轉載請附上博文連結!