[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

  • Votes
  • Date
  • Date décroissante
  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.
    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
        ç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. 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
            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.