如何在QSplashScreen中使用gif图像?

时间:2011-12-12 10:25:11

标签: qt

我在应用程序启动期间使用QSplashScreen显示图像。

现在我需要使用带有闪屏的动画gif图像。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

QImageReader阅读器类允许您使用QImageReader::read函数访问动画帧。

文档说明:

  

对于支持动画的图像格式,重复调用read()将返回下一帧。读取所有帧后,将返回空图像。

您需要继承QSplashScreen并重新实施paintEvent以绘制闪屏。 QImageReader::jumpToImage函数可用于从动画中选择正确的帧。

您需要有一些触发启动画面更新的系统,例如,如果您在循环中加载大量文件,则可以在加载每个文件后触发闪屏重绘。

定期调用QCoreApplication::processEvents将允许处理绘制事件,QWidget::repaint将触发重绘。

伪代码:

MySplashscreen screen;

// Loading loop
for (...)
{
    loadFile(...);

    screen.select_frame(...); // function to select correct frame
    screen.repaint();
    QCoreApplication::processEvents();
}