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 ?

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    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
    Points : 1 672
    Points
    1 672
    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.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    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
    Points : 1 672
    Points
    1 672
    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.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    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
    Points : 1 672
    Points
    1 672
    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).

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    Tu dis qu'il suffit que je copie TOUT ton code dans un meme fichiers main.cpp ?
    J'ai essayer mais j'ai des erreurs
    Je dois bien créer un fichier main.moc et coller a partir de #inclue "main.moc" ?

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    Je ne sais pas ce qu'il c'est passer
    J'avais 390 erreurs et 1980 avertissement, j'ai creer un nouveau fichiers et ca marche !

    Merci beaucoup superjaja

  9. #9
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    En esperant que tu arrives a bien comprendre le code.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    Merci beaucoup ! Ton code est tres clair, j'ai meme reussi a integrer un QlineEdit en regardant ce que tu avais fait ! Merci !
    Par contre, j'ai de nouveau un probleme ... Je créer la release, mais quand j'essaie de l'executer il me dit qu'il manque une dll, je la copie, il me dit qu'il en manque une autre, je la copie pareil, mais c'est la que ca se complique, ca ne se lance toujours pas
    ca m'affiche ca :


    Aurais tu une solution ?

  11. #11
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu compiles avec quoi VS ou mingwn ?

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    Bah je sais pas ... Dans Qt je clique suir build (en ayant selectionne avant de build en release)

  13. #13
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu utilises QtCreator surement donc c'est MinGW je pense si tu as pas fais de modif particulières.

    Dans le répertoire de ton .exe tu mets :
    -QtGui4.dll
    -QtCore4.dll
    -mingwm10.dll

    Prends bien les versions de release et non de debug (ex: QtGui4d.dll).

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    Bah je prend les .dll qui sont dans le repertoir bin
    en gros j'ai :

  15. #15
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    C'est très curieux. J'utilise pas MinGW mais je crois que c'est tout ce qu'il y a a faire. Utilises tu un autre module de Qt comme le module XML, OpenGL ou autres ? As tu plusieurs version de Qt sur ta machine ?

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    J'ai visual express 2008 sur ma machine, mais c'est tout
    Une seul version de Qt Creator ...
    Tu compile avec quoi toi ?

  17. #17
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Avec Visual Studio, je n'utilise pas QtCreator. Tu as du prendre le SDK Qt je pense.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    SDK de Qt ou de visual express ?

  19. #19
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    De Qt.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Points : 69
    Points
    69
    Par défaut
    Ce qui voudrait dire qu'il faudrait que je reinstall completement Qt ?
    Pourrais tu me donner le bon lien que je ne refass pas la meme bourde ^^

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