1

我有一个派生类QVariantAnimation,我必须在动画完成后运行代码。

我尝试了信号finished(),但没有发出:

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();

    };
4

1 回答 1

0

我解决了这个问题:

我重载了函数 updateCurrentTime 并检查当前时间是否等于持续时间。

updateCurrentTime(int curr)
{

    if(curr >= this->duration())....
... 
于 2013-08-28T07:00:19.977 回答