[QT] qsplashscreen

Bonjour,
j'utilise le qt sous unix
je voudrais afficher un message d'attente pendant l execution d'une fonction qui prend un certain temps, de la manière suivante (dans ma classe) :
1. afficher un message d attente
2. appeler la fonction
3. fermer le message

j'ai essayé d'utiliser qsplashscreen mais elle attend apperement l'affichage d une application qui tarde, pas une fonction à terminer.

est ce que vous avez une idée?
merci d'avance
Configuration: Windows XP
Firefox 2.0.0.20

5 réponses

  1. Contributeur
    tu parle de ça :
    void QSplashScreen::finish ( QWidget * mainWin )
    
    Makes the splash screen wait until the widget mainWin is displayed before calling close() on itself.
    ?
    Ce n'est pas fait pour ce que tu veux faire à priori.
    Je pense qu'à ta place je ferai ça :
    Création d'un Widget avec le message d'attente (nommé wid)
    wid.show();
    fonction_super_longue();
    wid.close();
    je ne suis pas certain que ça fonctionne correctement, mais à tester.
    1. re bonjour
      merci pour votre réponse,
      j'ai essayé ce que vous venez de faire mais ça marchait pas comme je veux , la deuxième fenetre ne reste pas affichée pendant l execution de la première
      ?
      1. Contributeur
        ça dépend comment s'exécute ta fonction. En même temps ou non ?
        Sinon, tu crée un widget bidon dont la seul tâche est de lancé la fonction :
        class bidon: public QWidget{
        bidon(){fonction_super_longue();close()}
        }
        et ensuite dans la fonction d'appel :
        QSplashScreen b;
        b.finish ( new bidon);
        (pas tester, mais c'est l'esprit)
        1. merci mais monsieur avec cet esprit,
          on revient au premier problème de qsplashscreen, il attend que l'application s'affiche(bidon)
          donc dès le début de bidon , le splash va se finir, avant la terminaison de ma fonction :)
          ?
          1. Contributeur
            Tu as essayé ?
            Car comme il n'y a pas de show, elle ne devrais jamais se fermer ta fenêtre splash.
            Je pense que finish attend que bidon.isShown() soit vrai.
            Sinon, il faut jouer avec les signaux.