Partage

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);

}



Vous êtes demandeur d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur web junior

Je postule
Formation
en ligne
Financée
à 100%
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+

Un p'tit vote pour ma réponse si elle t'a aidé, ça fais toujours plaisir !
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);

}
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+

Un p'tit vote pour ma réponse si elle t'a aidé, ça fais toujours plaisir !
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 !...

Exercice sur les widgets

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown