Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT] Problème de condition

Elle ne fonctionne pas

Sujet résolu
    5 mai 2008 à 1:15:20

    Salut à tous !
    Voilà je poste dans le forum parce que j'ai un petit souci. En effet, j'ai commencé aujourd'hui la lecture du tutoriel sur QT et j'ai voulu me lancer dans un petit programme de gestion.

    Le problème c'est que ma condition ne fonctionne pas. Ce que je veux faire :
    - si la checkbox m_pantalon est cochée : on clique sur le bouton et le programme s'arrête
    - si la checkbox m_pantalon n'est pas cochée : on clique sur le bouton mais rien ne se passe
    (ça peut paraître inutile ce que je fais là, mais c'est juste pour faire des tests :) )

    MaFenetre::MaFenetre() : QWidget()
    {
    // ... propriétés sur la fenêtre
    m_domestic = new QCheckBox("Domestic", this); // je crée ma checkbox
        if(m_domestic->isChecked()) m_domestic->setChecked(true);
        else m_domestic->setChecked(false);
    
    m_fenetreChoixPresence = new QVBoxLayout;
    m_fenetreChoixPresence->addWidget(m_domestic);
    m_choixPresence->setLayout(m_fenetreChoixPresence);
    
    m_boutonChangerPresence[0] = new QPushButton("changer la présence", this);
    m_boutonChangerPresence[0]->setGeometry(500, 101, 150, 18);
        if(m_pantalon->isChecked()) QObject::connect(m_boutonChangerPresence[0], SIGNAL(clicked()), qApp, SLOT(quit()));
    }
    


    Je ne sais pas si vous en avez besoin mais je le mets quand même :)

    #include <QtGui>
    #include "MaFenetre.h"
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        MaFenetre fenetre;
        fenetre.show();
    
        return app.exec();
    }
    


    Et le header aussi tant qu'à faire :p

    #include <QtGui>
    
    class MaFenetre : public QWidget
    {
        Q_OBJECT
    
        public:
        MaFenetre();
    
        private:
    
        QPushButton *m_boutonChangerPresence[8];
    
        QRadioButton *m_pantalon;
    
        QCheckBox *m_domestic;
    
        QGroupBox *m_choixPresence;
        QVBoxLayout *m_fenetreChoixPresence;
    
        QGroupBox *m_changerPresence;
        QVBoxLayout *m_fenetreChangerPresence;
    };
    


    D'avance merci pour tout vos réponses :)
    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2008 à 3:24:33

      la seul ligne qui pose problème est celle-ci.

      if(m_pantalon->isChecked()) QObject::connect(m_boutonChangerPresence[0], SIGNAL(clicked()), qApp, SLOT(quit()));
      


      "Tu CRÉE une connexion seulement si 'pantalon' est coché".

      Donc, tu devras créer un slot, par exemple nommé 'void verification()', remplacer la ligne ci-dessus par :

      QObject::connect(m_boutonChangerPresence[0], SIGNAL(clicked()), this, SLOT(verification()));
      


      "Tu crée une connexion, qui, à chaque fois que le bouton sera cliqué, appellera la méthode membre de 'this' nommé 'verification'".

      dedans la méthode (slot) verification, tu peux faire ceci :

      if(m_pantalon->isChecked())
          qApp->quit();
      


      EDIT: oh et - hors-propos -, la partie :

      if(m_domestic->isChecked()) m_domestic->setChecked(true);
          else m_domestic->setChecked(false);
      

      est COMPLETEMENT INUTILE. tu peux l'effacer ^^
      • Partager sur Facebook
      • Partager sur Twitter
      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        5 mai 2008 à 8:05:21

        EDIT : Merci beaucoup pour ta réponse cela fonctionne parfaitement :)
        Au plaisir !
        • Partager sur Facebook
        • Partager sur Twitter

        [QT] Problème de condition

        × 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