2013-08-22 91 views
1

我有一個派生自QVariantAnimation的類,我必須在動畫結束後運行代碼。檢查QVariantAnimation是否完成?

我試過信號finished()尚未,但沒有EMIT:

connect(this, SIGNAL(finished()), this, SLOT(setEndVariables())); 

是否有任何其他意見,看是否動畫停止,或者是信號的用法錯了嗎?

編輯:使用代碼

LiConfigurableFrameAnimation::LiConfigurableFrameAnimation(QString compId, int dur, LiConfigurableFrame *f) 
{ 
    if(dur>0) 
     this->setDuration(dur); 
    frame=f; 
    widget=frame->getComponent(compId); 
    isRectMode=false; 
    isImageMode=false; 

    connect(this, SIGNAL(finished()), this, SLOT(setEndVariables())); 
} 

頭文件:

class LiConfigurableFrameAnimation: public QVariantAnimation 
{ 

    private slots: 
     void setEndVariables(); 

    }; 
+0

爲什麼同一個對象('this')中的信號和插槽?它不應該像'connect(,SIGNAL(finished()),this,SLOT(setEndVariables()));'? – SingerOfTheFall

+0

但我在我覆蓋QVariantAnimation類的連接,所以我認爲這是可以使用相同的對象(這)?或者我錯了,這是不可能的?謝謝你的評論! – MPhil

+0

是的,在這種情況下,它是好的,我只是想檢查它是否是一個錯字。你是否超載'開始'或任何其他功能?此外,您可以隨時調用'state()'來檢查動畫是否仍在運行。 – SingerOfTheFall

回答

0

我解決了這個問題:

我重載函數updateCurrentTime並檢查當前時間等於持續時間。

updateCurrentTime(int curr) 
{ 

    if(curr >= this->duration()).... 
...