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

Change GIF animation speed without generating new QMovie

本文关键字:QMovie GIF 动画 速度 更改      更新时间:2023-10-16

我正在为一个智力竞赛节目创建记分板,我偶然发现了这个问题。下面的代码显示动画.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吗?

在Widget构造函数中的函数外加载一次Movie,然后多次重用。