c++ - 在不生成新 QMovie 的情况下更改 GIF 动画速度

标签 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 吗?

最佳答案

在该函数之外加载该电影一次 - 在 Widget 构造函数中并在以后多次重用它。

关于c++ - 在不生成新 QMovie 的情况下更改 GIF 动画速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34692537/

相关文章:

c++ - 辛>> "no operator matches these operands"

c++ - STL vector 和线程安全

c++ - (Qt C++) int 不会加数字吗?

ios - 在 iOS 中为任意层属性设置动画

java - MPAndroidChart。如何播放scaleX动画来显示BarChart中实体的范围?

c++ - 将 Q_GADGET 中的 Q_INVOKABLE 公开给 QML

c++ - 如何计算方位角

c++ - Qt C++ 如何在类中使用 QWidget 的 keyPressEvent

mysql - 如何在qt中首先调用另一个表单

css - 反向 CSS3 过渡