0

我在我的应用程序中使用 gif。我只想显示一次我的 gif,然后让它消失。但它不断循环并一次又一次地显示。

这是我尝试过的:

    movie = new QMovie(":/in_game/src/countdown.gif");
processLabel = new QLabel();
this->addWidget(processLabel);
processLabel->setStyleSheet("background-color: rgba(0,0,0,0%)");
processLabel->setGeometry(280,250,128,128);

processLabel->setMovie(movie);

int i=0;

if(i<1)
{
    movie->start();
    i++;
}
else
{
    movie->stop();
    processLabel->setEnabled(false);
}

当然,在我的 .h 中,我创建了一个 QMovie 和一个 QLabel ......关于如何只显示一次的任何想法?

4

1 回答 1

0

你有QMovie::frameCount()方法和信号QMovie::frameChanged()。检查您当前的帧号并在当前帧相等时停止QMovie::frameCount()

m_movie = new QMovie(":/gif/tenor.gif");
connect(m_movie, SIGNAL(frameChanged(int)),
        this, SLOT(OnFrameChanged(int)));

ui->lblMovie->setMovie(m_movie);
m_movie->start();

在插槽中:

void MainWindow::OnFrameChanged(int frame)
{
    if (frame == m_movie->frameCount() - 1) {
        m_movie->stop();
    }
}
于 2019-01-14T18:58:19.030 回答