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