Nominate our 2022 Qt Champions!

Unable to load gif file in QImage

  • I am using Qt 4.5 (on VS 2008) which has been built dynamically(debug and release). I have linked my app to the <QTDIR>\plugins\imageformats\qgifd4.lib.

    I create a QImage from a gif file on disk. But the QImage returned is null. I logged the loading of the gif plugin using QT_DEBUG_PLUGINS flag. The gif plugin logs are as below

    'MyApp.exe': Loaded 'C:\Qt\VS45\qt\plugins\imageformats\qgifd4.dll', Symbols loaded.
    'MyApp.exe': Unloaded 'C:\Qt\VS45\qt\plugins\imageformats\qgifd4.dll'

    I also debugged the creation of QImage. In the function createReadHandlerHelper() the code looks like this
    QFactoryLoader *l = loader();
    QStringList keys = l->keys();

    after this when the code searches for the "gif" extension in these keys nothing is found.
    Does it mean that the gif plugin is corrupt? What am I doing wrong? Please help!! I have stuck here for a long time.

  • Try this:

    In Qt folder go to <Qt Version Folder>\examples\widgets\imageviewer
    Try to load your gif images thru this application, if they are getting loaded then no prob with your plugin.

    2nd step: Check the gif path in your application. R u loading them from resource file or thru relative path, whatever is the case but using QFileInfo class you can check if the path is valid before u pass that to QImage class.

  • The imageviewer is also not able to load gif files. I am loading the files thru absolute path.

  • Check gif files are ok

    Try to create qrc (qt resource file) Add file into it

    Then load it.

    Also if possible update your version.

  • I have upgraded to 4.6.3 , and now the QImage objects loads the gif file properly. But I am unable to render it in a TableView cell. I have a custom model for the view whose data function has the following pseudo code

    QVariant data()
    if (role== displayrole)
    return QVariant(QImage(gifFilePath));
    return QVariant();

  • Start new thread

  • After reading the documentation again, I figured out that it should be the decoration role and not the display role for the gif to render.

Log in to reply