Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice sur les widgets

    11 juillet 2018 à 22:42:02

    Bonjour,

    A partir du cours Openclassroom j'ai bricolé ce code qui compile mais le bouton ne fait pas la mise à zéro de l'afficheur LCD. Je suis arrivé à le faire pour la ProgressBar mais je voudrais aussi faire qu'un clic sur le bouton mette l'afficheur LCD et la ProgressBar à une valeur donnée précisée dans le code. Qu'est-ce qui ne va pas dans mon code quelqu'un peut-il me le dire ?

    Par avance merci beaucoup pour vos réponses.

    #include "mafenetre.h"
    
    MaFenetre::MaFenetre() : QWidget()
    {
        bool bouton_click=false;
    
        setFixedSize(400,200);
    
        m_lcd = new QLCDNumber(this);
        m_lcd->setSegmentStyle(QLCDNumber::Flat);
        m_lcd->move(50,20);
    
        m_slider = new QSlider(Qt::Horizontal,this);
        m_slider->setGeometry(10,60,150,20);
    //    m_slider->setValue(0);
    
        m_progressbar = new QProgressBar(this);
        m_progressbar->setGeometry(10,100,150,20);
    
        m_bouton = new QPushButton("RAZ",this);
        m_bouton->setGeometry(250,60,100,40);
    
        QObject::connect(m_slider, SIGNAL(valueChanged(int)), m_lcd, SLOT(display(int)));
        QObject::connect(m_slider,SIGNAL(valueChanged(int)),m_progressbar, SLOT(setValue(int)));
    //    QObject::connect(m_bouton, SIGNAL(clicked()),m_slider, SLOT(setValue(0)));   // La RAZ ne marche pas...
    //    QObject::connect(m_bouton, SIGNAL(clicked()),m_slider, SLOT(reset()));   // La RAZ ne marche pas...
    //    QObject::connect(m_bouton, SIGNAL(clicked()),m_progressbar, SLOT(reset()));
    //  QObject::connect(m_bouton, SIGNAL(clicked()),m_lcd, SLOT(???));   // La RAZ ne marche pas...
    
        m_bouton->clicked(bouton_click);
        if (bouton_click == true) m_slider->setValue(0);
    
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2018 à 7:55:17

      Salut !

      Tu peux directement créer une fonction :

      void window::on_m_button_clicked()
      {
         //mettre slider à 0
      }

      Elle sera directement "détectée" par Qt, tu n'aura pas besoin de slots ni de signal.

      Si ça ne marche pas, envoie moi ton ton code pour que je puisse le tester.

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2018 à 21:47:19

        Bonjour,

        Merci pour ta réponse ! :-)

        Suite à ta remarque j'ai produit ce code mais le bouton de RAZ reste inopérant !!!

        A+

        Fichier .h :

        #ifndef MAFENETRE_H
        #define MAFENETRE_H
        
        #include <QApplication>
        #include <QWidget>
        #include <QPushButton>
        #include <QLCDNumber>
        #include <QSlider>
        #include <QProgressBar>
        
        class MaFenetre : public QWidget
        {
        public:
            MaFenetre();
            void on_m_button_clicked();
        private:
            QLCDNumber *m_lcd;
            QSlider *m_slider;
            QProgressBar *m_progressbar;
            QPushButton *m_bouton;
        };
        
        #endif // MAFENETRE_H
        

        Fichier .cpp :

        #include "mafenetre.h"
        
        
        void MaFenetre::on_m_button_clicked()
        {
            m_slider->setValue(0);
        }
        
        MaFenetre::MaFenetre() : QWidget()
        {
        //    bool bouton_click=false;
        
            setFixedSize(400,200);
        
            m_lcd = new QLCDNumber(this);
            m_lcd->setSegmentStyle(QLCDNumber::Flat);
            m_lcd->move(50,20);
        
            m_slider = new QSlider(Qt::Horizontal,this);
            m_slider->setGeometry(10,60,150,20);
        //    m_slider->setValue(0);
        
            m_progressbar = new QProgressBar(this);
            m_progressbar->setGeometry(10,100,150,20);
        
            m_bouton = new QPushButton("RAZ",this);
            m_bouton->setGeometry(250,60,100,40);
        
            QObject::connect(m_slider, SIGNAL(valueChanged(int)), m_lcd, SLOT(display(int)));
            QObject::connect(m_slider,SIGNAL(valueChanged(int)),m_progressbar, SLOT(setValue(int)));
        //    QObject::connect(m_bouton, SIGNAL(clicked()),m_slider, SLOT(setValue(0)));   // La RAZ ne marche pas...
        //    QObject::connect(m_bouton, SIGNAL(clicked()),m_slider, SLOT(reset()));   // La RAZ ne marche pas...
        //    QObject::connect(m_bouton, SIGNAL(clicked()),m_progressbar, SLOT(reset()));  // Marche !
        //  QObject::connect(m_bouton, SIGNAL(clicked()),m_lcd, SLOT(???));   // La RAZ ne marche pas...
        
        //    m_bouton->clicked(bouton_click);
        //    if (bouton_click == true) m_slider->setValue(0);
        
        }
        • Partager sur Facebook
        • Partager sur Twitter
          3 août 2018 à 17:37:31

          Salut !

          Excuse moi pour le retard, j'étais en vacances...

          Il est possible que le problème vienne du nom du bouton qui intègre un tiret du bas,

          Essais de renommer le bouton : mBouton, et la fonction : void on_mBouton_clicked().

          A+

          • Partager sur Facebook
          • Partager sur Twitter
            17 août 2018 à 21:16:03

            Bonjour,

            J'ai renommé tous les m_bouton en mbouton en enlevant les tirets bas mais cela ne marche pas mieux, la RAZ ne fonctionne toujours pas !...

            • Partager sur Facebook
            • Partager sur Twitter

            Exercice sur les widgets

            × 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