Xavier_TXHXH 2021-05-18 11:36 采纳率: 0%
浏览 65

QMovie播放gif动态图片后切换为jpg静态图片的问题

想知道一下QMovie调用start后,gif图片显示的过程及原理,
因为在QMovie实例化后,调用start播放gif图片,之后通过延时函数,让gif图片播放3s,再切换播放其他图片,
结果gif图片播放出来是静止的画面,感觉应该是start的实现原理不够理解,或者是延时函数的问题
下面是我的代码,
void MainWindow::picture_path(const QString &path)//path为放置gif图片及jpg图片的文件夹路径
{
    QDir dir(path);//实例化QDir
    if (!dir.exists())//判断改路径是否存在
    {
        qDebug()<<false;
    }
    dir.setFilter(QDir::Files | QDir::NoSymLinks);//
    dir.setSorting(QDir::Name);//设置排序顺序
    QFileInfoList list = dir.entryInfoList(QDir::Files|QDir::NoDotAndDotDot);//用list保存文件夹下的图片文件
    for (int i = 0; i < list.size(); i++)
    {     
            QFileInfo fileInfo = list.at(i);
            QString OpenFileName = fileInfo.fileName();
            QString picturepath = fileInfo.path()+"/"+OpenFileName;//获取图片文件的路径
            if(OpenFileName.endsWith(".gif"))
            {
               QMovie *movie = new QMovie(picturepath);
               ui->label1->setMovie(movie);              
               movie->start();
            }else{
                QPixmap pix(picturepath);
                QPixmap dest=pix.scaled(ui->label1->size(),Qt::KeepAspectRatio);
                ui->label1->setPixmap(dest);
            }
            movie_sleep(3000);//自定义的延时函数,不会阻塞进程
}

void MainWindow::movie_sleep(unsigned int msec)
{
    QTime _Timer = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < _Timer )
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

}


 
  • 写回答

2条回答 默认 最新

  • CSDN专家-黄老师 2021-05-18 19:50
    关注

    movie->start();之后再等待三秒,下一次播放的时候,应该清空label1

    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下STM32创建工程模板时遇到得问题
  • ¥15 Fiddler抓包443
  • ¥20 Qt Quick Android 项目报错及显示问题
  • ¥15 而且都没有 OpenCVConfig.cmake文件我是不是需要安装opencv,如何解决?
  • ¥15 oracleBIEE analytics
  • ¥15 H.264选择性加密例程
  • ¥50 windows的SFTP服务器如何能批量同步用户信息?
  • ¥15 centos7.9升级python3.0的问题
  • ¥15 安装CentOS6时卡住
  • ¥20 c语言写的8051单片机存储器mt29的模块程序