我正在为智力竞赛节目制作一个记分牌,我偶然发现了这个问题。下面的代码显示动画.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文件?
答案 0 :(得分:1)
在该函数外部加载一次Movie - 在Widget构造函数中,稍后重复使用它。