只显示一次 gif
Display gif only once
我在我的应用程序中使用 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...关于如何只显示一次的任何想法?
您有 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();
}
}
我在我的应用程序中使用 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...关于如何只显示一次的任何想法?
您有 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();
}
}