2013-08-22 93 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()).... 
...