更改GIF动画速度而不生成新的QMovie

时间:2016-01-09 10:50:53

标签: c++ qt animation

我正在为智力竞赛节目制作一个记分牌,我偶然发现了这个问题。下面的代码显示动画.gif的动画速度取决于播放器的当前分数。

    void Scoreboard::label1(int i)
{
    ui->label_46->setNum(i);
    ui->label_46->setStyleSheet("color: #ff5500; qproperty-alignment: AlignCenter; background-color: rgba(0,0,0,0%); font-size: 26 pt;");
    ui->label_96->clear();
    QMovie *logo1 =new QMovie("C:/Users/**REDACTED**/Desktop/esq-minimal-sample-adjusted-color.gif");
    ui->label_96->setMovie(logo1);
    logo1->start();
    int speed;
    speed=i*40;
    if(speed<=0)
    {
        logo1->stop();
       return;
    }else if(speed==100)
    {
        return;
    }else if(speed>500)
    {
        speed=500;
    }
    logo1->setSpeed(speed);
}

代码工作正常,直到分数变化太多次(即插槽标签1已多次激活)。这会导致.gif的多个副本在同一位置加载,导致程序速度变慢。

在将新的.gif加载到程序之前,有没有办法删除以前的.gif文件?

1 个答案:

答案 0 :(得分:1)

在该函数外部加载一次Movie - 在Widget构造函数中,稍后重复使用它。