Partage
  • Partager sur Facebook
  • Partager sur Twitter

barre de progression automatique

Qt

    12 juin 2008 à 22:04:35

    Bonsoir à tous les Zèros
    j'ai realisé une fenetre sous Qt avec une barre de progression, que j'aimerais faire évoluer de facon automatique.

    voici mon fichier fenetre.cpp:

    #include "fenetreAcceuil.h"
    
    fenetreAcceuil::fenetreAcceuil(QWidget *parent) : QWidget(parent)
    {
        setupUi(this);
    
        int temps = 17, z = 0; // la barre de progression possède la valeur 17% au départ
    
        // valeurBarre = Signal crée : void valeurBarre (int);
        connect(this, SIGNAL(valeurBarre(int)), barreProgression, SLOT(setValue()) );
    
        while(temps < 101)
        {
            for(int i = 0; i<10000000; i++)  //faire attendre l'ordinateur pendant un certain temps
            {
                    z += 4;  // calcul inutile
            }
            temps += 2; // incremanter
    
            emit valeurBarre(temps); // emettre un signal apres que le temps d'attente soit ecoulé
        }
    }
    


    cela a l'aire de marcher, car le programme met du temps (ce qui n'est souvent pas le cas) avant de s'excecuter(l'utilisateur ne voit donc pas la barre évoluer). Une fois le Programme excécuté, la barre de progression a la valeur 99%.

    Ma question est donc de savoir, comment modifier le programme, à fin que la valeur de la barre soit changé après que la fenetre ait été construite.
    Mieux encore, y-a t-il une autre methode pour faire évoluer une barre de progression de facon automatique ?
    Merci pour vos contributions
    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2008 à 22:09:06

      Non, il n'existe aucune méthode automatique pour la simple raison qu'il faut pouvoir interpréter les données en cours de chargement (ou tout autre action). Ceci est bien sûr très spécifique à ton programme et les développeurs de Qt ne peuvent pas créer de méthode générique qui conviendra aux besoins de tous.

      La seule méthode est de créer une méthode qui modifie la valeur de ta barre lorsque les données changent et en fonction du changement.
      • Partager sur Facebook
      • Partager sur Twitter
        12 juin 2008 à 22:16:20

        j'ai bien pensé à cela, mais il y-a un problème quant mème un problème.
        je n'est pas voulu créer une methode parce que, si je sort du constructeur, alors je ne pourrais plus accéder à un widget de la fenêtre. Ainsi une manipulation tel que " barreProgression->setValue(50)" serait impossible.
        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2008 à 22:29:34

          Ben si c'est tout a fait possible.
          Tu créé un attribut privé QProgressBar à ta fenêtre et tu ajoute une fonction publique qui permet d'en modifier le contenu, du genre
          fenetreAccueil::setProgressBarValue(int value)
          {
             prog->setValue(value); // prog est bien sûr ton attribut QProgressBar
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2008 à 23:17:43

            Si tu met le min et le max à zero,
            tu aura une progress qui defile toute seule

            Citation : Pas de titre

            If minimum and maximum both are set to 0, the bar shows a busy indicator instead of a percentage of steps.


            http://doc.trolltech.com/4.4/qprogressbar.html#details
            • Partager sur Facebook
            • Partager sur Twitter
              13 juin 2008 à 21:41:50

              sinon tu hérites les widgets que ta besoin dans une nouvelle classe et tu rajoute un signal qui prend en paramètres un pointeur sur une QProgressBar et un int.
              ensuite du rehérite pour avoir un widget et des qu'il est chargé tu utilise le signal sur un slot de la QProgressBar qui augmente du int.

              c'est un peu bourrin mais bon ^^
              • Partager sur Facebook
              • Partager sur Twitter

              barre de progression automatique

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown