IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Comment declencher une QProgressBar avec un bouton ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut Comment declencher une QProgressBar avec un bouton ?
    Bonjour a tous !
    J'essai de creer mon proggrame avec Qt, j'ai reussi a integrer sans trop de probleme un QLineEdit, un QPushButton aussi
    Mais la ou es le probleme c'est que ma QProgressBar reste invariablement a 0
    J'aimerais la fair debuter quand le boutton sera cliquer, et lui donner un temp pour aller jusqu'a 100.
    Cela serai il possible ?
    Au cas ou je mets le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #include <QApplication>
    #include <QtGui>
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        QWidget fenetre;
        fenetre.setWindowTitle("Ma fenetre");
     
        QFrame *frame = new QFrame(&fenetre);
        frame->setFrameShape(QFrame::StyledPanel);
        frame->setGeometry(60, 35, 240, 160);
     
     
        QLineEdit *lineEdit = new QLineEdit("Entrer votre nom");
        QPushButton *bouton1 = new QPushButton("Cliquer ici");
        QProgressBar *progress = new QProgressBar;
        progress->setValue(00);
     
     
     
        QVBoxLayout *vbox = new QVBoxLayout;
        vbox->addWidget(lineEdit);
        vbox->addWidget(bouton1);
        vbox->addWidget(progress);
     
        frame->setLayout(vbox);
     
     
        fenetre.show();
     
        return app.exec();
    }

    Merci a toutes les reponse

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Oui cela est possible. A mon avis pour ce que tu veux faire le mieux est d'utiliser un QTimer et a chaque fois que le timer se declanche tu fais avancer la QProgressBar. Tu devrais trouver ton bonheur dans la FAQ pour ce qui est du QTimer et pour la QProgressBar il faut que tu utilises la methode setValue(int value ) pour incrementer la valeur.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Et pour fair le lien entre le bouton et le QTimer je peux fair comment (je debute ...)
    Merci pour ta reponse

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Dans le slot qui repond a bouton tu demarres le QTimer. En gros tu peux prendre le code de la FAQ et le modifier et cela repondra a ton problème. C'est la meme chose dans la FAQ on met a jour un LCDDisplay tout les n seconde ou millisecondes je sais plus. Là toi tu mets a jour ta QProgressBar.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Arg jsuis carement perdu la ...
    J'avais l'habitude d'annoncer mes QprogressBar etc etc avec des truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QProgressBar *progress = new QProgressBar;
    Et la j'en ai pas trouver ...

    Pourrais tu fair un exemple basique ?

    Desoler de t'en demander tant
    d'avance Merci

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    #include <QtGui>
    #include <QApplication>
    #include <QPushButton>
    #include <QTimer>
     
    class TimerChrono : public QWidget
    {
        Q_OBJECT
     
    private :
        //Bouton servant de "Start" "Stop"
        QPushButton* m_Bouton_StartStop;
    	QProgressBar* m_Progress;
     
        int m_Timer_value;
        //Timer servant de base à notre Chronomètre
        QTimer* m_timer;
        //Permet de savoir si l'utilisateur a cliqué sur "Start" ou "Stop"
        bool validStart;
     
    public :
        TimerChrono()
        {
     
            //Creation des contrôles de types boutons
            this->m_Bouton_StartStop = new QPushButton("Start",this);
    		this->m_Progress = new QProgressBar(this);
            //Gestion du layout pour le placement des boutons
            QVBoxLayout *layout = new QVBoxLayout();
    		layout->addWidget(m_Progress);
            layout->addWidget(m_Bouton_StartStop);		
            this->setLayout(layout);
     
            //On met à zeros le compteur représentant le nombre de seconde
            this->m_Timer_value=0;
            //Création du timer
            this->m_timer = new QTimer(this);
            //A chaque fin d'interval execution de la fonction update()
            connect(this->m_timer, SIGNAL(timeout()), this, SLOT(update()));
            //On applique un interval d'une seconde (1000 ms) entre chaque timeout du timer
            this->m_timer->setInterval(1000);
            //Sert pour la gestion du bouton "Start" "Stop"
            this->validStart=true;
    		this->m_Progress->setRange(0,100);
     
            //On connecte les differents signaux et slots
            connect(this->m_Bouton_StartStop, SIGNAL(clicked(bool)), this, SLOT(click_StartStop(bool)));
     
             //Gestion de la taille de la fenêtre
            resize(200, 150); 
        }
     
    private slots:
        //Fonction appellée toute les secondes par le QTimer
        void update()
        {	this->m_Timer_value++;
    		this->m_Progress->setValue(this->m_Timer_value);
        }
     
        //Bouton "Start" "Stop"
        void click_StartStop(bool valid)
        {
            //Si on click sur "Start"
            if(validStart == true)
            {
                //Affiche "Stop" sur le bouton
                m_Bouton_StartStop->setText("Stop");
                //Permet de savoir que le bouton est en mode "Strop"
                validStart = false;
                //On declanche le départ du Timer
                this->m_timer->start();
            }
            else//Si on click sur "Stop"
            {
                //Affiche "Sart" sur le bouton
                m_Bouton_StartStop->setText("Start");
                //Permet de savoir que le bouton est en mode "Start"
                validStart = true;
                //On arrete le compteur
                this->m_timer->stop();
    			this->m_Progress->setValue(0);
    			this->m_Timer_value=0;
            }
        }
    }; 
     
    #include "main.moc"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        TimerChrono w;
        w.show();
        return a.exec();
    }
    Voilà un code qui fonctionne. Tu as juste a faire un copie collé dans un fichier main.cpp. Comme je te l'avais dis je me suis baser sur l'exmple du timer de la FAQ. Le code est pas obligatoirement super propre. J'ai juste voulu te montrer le principe.

    Bon courage.

    Si tu as encore des question n'hesite pas.
    PS: dans l'exmple de la FAQ il n'y a pas de ProgressBar. Donc pas besoins de chercher il fallait adapter. (voir code au dessus).
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

Discussions similaires

  1. [MySQL] comment faire un lien avec un bouton pour ouvrir une page en php
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/04/2012, 21h11
  2. Réponses: 2
    Dernier message: 20/05/2009, 17h10
  3. declencher une fonction avec un bouton
    Par audran12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 30/04/2007, 13h06
  4. Réponses: 3
    Dernier message: 06/06/2006, 17h38
  5. Comment obtneir une MessageBox avec un bouton Détails ?
    Par jmjmjm dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/12/2005, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo