【问题标题】:Display gif only once仅显示一次 gif
【发布时间】:2019-01-14 13:52:29
【问题描述】:

我在我的应用程序中使用 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...关于如何只显示一次的任何想法?

【问题讨论】:

    标签: qt gif qmovie


    【解决方案1】:

    你有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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 2020-06-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2015-10-08
      相关资源
      最近更新 更多