Important: Please read the Qt Code of Conduct -

Speed of gif

  • Hi guys!

    This is a very simple question. I have a QLabel with a QMovie that reproduces a .gif... The thing is that I dont know how to show it smoothly, I mean the gif shows perfectly but its like "stucking". I tried increasing the speed but that doesnt change is my code:

    @ int main(int argc, char *argv[])
    QApplication a(argc, argv);
    LoadingWidget *loadwidg = new LoadingWidget ();
    loadwidg->show ();
    qApp->processEvents ();
    QApplication::setStyle (new IconSize ());
    QCoreApplication::addLibraryPath (".");
    MainWindow mainWin;
    ajustarPreferenciasVentanaPrincipal (&mainWin);
    //some not interesting code
    //-----------------FIN CONTROLADOR--------------------------
    if (handler >= 0 && aux ==0 && capacidad >0){
    mainWin.setHandler (handler);
    loadwidg->~LoadingWidget ();;
    return a.exec();
    if (capacidad == 0){
    QMessageBox::critical (0, QString ("NO MORE REGISTERS TO STORE DATA"), QString ("No quedan más registros para guardar información fiscal\n\nNo se podrá realizar ninguna operación\nrelacionada con el controlador."), QMessageBox::Ok);
    }else QMessageBox::information (0, QString ("NO FISCAL PRINTER"),QString ("No se ha encontrado el controlador fiscal\nconectado, no se podrá facturar"));
    mainWin.setHandler (-1); ();
    loadwidg->~LoadingWidget ();
    return a.exec ();

    Thank you all in advance... Maybe its my slow computer, maybe its something i cant change...BTW QSplash window does not work for me, its not a solution :P

  • Anything less than 40 ms should be okay.
    Otherwise, gifs are pretty slow, so it might be computer ;).
    Can you upload a test gif to see the result?


    thats the gif..I think it is more than 40ms...The thing is that I think that the load of the main is delaying the gif

  • Try creating a separate thread for doing all the loading, and in the main thread display only gif ( all in loadingWidget).
    Otherwise, the delay is exactly 40ms, and it runs smoothly if I open it normally.

  • I`ll try that approach

  • Hi i think im having some problems understanding how to use the threads to my benefit....

    I`ve changed my main like this:

    @#include <QtGui/QApplication>
    #include <QObject>
    #include "waitthread.h"
    #include "loadthread.h"

    int main(int argc, char *argv[])
    QApplication a(argc, argv);
    QApplication::setStyle (new IconSize ());

    LoadThread * load_thread = new LoadThread ();
    WaitThread * wait_thread = new WaitThread ();
    QObject::connect (load_thread, SIGNAL(load_finished()), wait_thread, SLOT(loading_finished()));
    load_thread->start ();
    wait_thread->start ();
    return a.exec &#40;&#41;;


    the loadthread.cpp:

    mainWin = new MainWindow ();

    void LoadThread::run (){
    //--------------------do some stuff
    emit load_finished ();
    mainWin->show ();

    And the waitThread.cpp
    @#include "waitthread.h"

    loadwidg = new LoadingWidget ();
    loadwidg->show ();

    void WaitThread::run (){

    void WaitThread::loading_finished (){
    loadwidg->close ();
    delete loadwidg;
    this->terminate ();

    Somehow..the mainWin doesnt show and the loadingwidget neither

    My bad loadingWidget is shown.

    ----EDIT 2

    found my first mistake the mainWin must be shown in a different method otherwise the thread finishes when run finishes

Log in to reply