Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fenetre Qt ne s'ouvre pas

    28 février 2008 à 18:34:22

    Bonjour,
    J'ai commencer mon code en faisant a la methode 'facile', et je voulais refaire mon code propement avec le fichier h les classes etc. comme dans le tuto officiel. Mais voila problème, codeblock compile l'appli sans une seule erreur et aucune fenetre ne s'ouvre. J'ai beau cherché mais je ne trouve pas d'ou ca vient.

    Main.cpp
    1. #include <qapplication.h>
    2. #include "MaFenetre.h"
    3. int main(int argc, char *argv[])
    4. {
    5.     QApplication app(argc, argv);
    6.     MaFenetre fenetre;
    7.     fenetre.show();
    8.     return app.exec();
    9. }

    MaFenetre.cpp
    1. #include "MaFenetre.h"
    2. MaFenetre::MaFenetre() : QWidget()
    3. {
    4.     // Création d'un widget qui servira de fenêtre
    5.     show();
    6.     setFixedSize(500, 300);
    7.     physique = new QGroupBox("Physique", this);
    8.     physique -> setGeometry(10,10,230,250);
    9.     t_nom = new QLabel ("Nom : ",this);
    10.     t_nom -> move(20,25);
    11.     nom = new QLineEdit (this);
    12.     nom -> move(20,40);
    13.     nom -> setText("charly");
    14.      t_prenom = new QLabel ("Prenom : ",this);
    15.     t_prenom -> move(130,25);
    16.     prenom = new QLineEdit (this);
    17.     prenom -> move(130,40);
    18.     francais = new QCheckBox ("Je suis de nationalité française", this);
    19.     francais -> move(20,80);
    20.     t_poids = new QLabel ("Poids :",this);
    21.     t_poids -> move(20,120);
    22.     poids = new QLineEdit (this);
    23.     poids -> setGeometry(52,115,30,20);
    24.     poids -> setMaxLength(3);
    25.     t_kg = new QLabel ("kg",this);
    26.     t_kg -> move(84,120);
    27.     t_taille = new QLabel ("Taille :",this);
    28.     t_taille -> move(110,120);
    29.     taille = new QLineEdit (this);
    30.     taille -> setGeometry(140,115,30,20);
    31.     taille -> setMaxLength(3);
    32.     t_cm = new QLabel ("cm",this);
    33.     t_cm -> move(172,120);
    34.     t_imc = new QLabel ("IMC :",this);
    35.     t_imc -> move(20,140);
    36.     imc = new QProgressBar (this);
    37.     imc -> setGeometry(20,160,200,15);
    38.     imc -> setValue(32);
    39.    // QObject::connect(poids, SIGNAL(valueChanged(int)), this, SLOT(calculerImc(int)));
    40.      // Création du bouton, ayant pour parent la "fenetre"
    41.       bouton = new QPushButton ("Valider", this);
    42.     bouton -> setText("Valider");
    43.     bouton -> setFixedSize(470,25);
    44.     bouton -> move(10,270);
    45.     // Customisation du bouton
    46.     bouton -> setFont(QFont("Times New roman", 14));
    47.     bouton -> setCursor(Qt::PointingHandCursor);
    48. }

    MaFenetre.h
    1. #ifndef DEF_MAFENETRE
    2. #define DEF_MAFENETRE
    3. #include <qstring.h>
    4. #include <qapplication.h>
    5. #include <qpushbutton.h>
    6. #include <qprogressbar.h>
    7. #include <qtimer.h>
    8. #include <QProcess.h>
    9. #include <QGroupBox.h>
    10. #include <QComboBox.h>
    11. #include <QLineEdit.h>
    12. #include <QLabel.h>
    13. #include <QCheckBox.h>
    14. #include <QProgressDialog.h>
    15. #include <string.h>
    16. class MaFenetre : public QWidget
    17. {
    18.     Q_OBJECT
    19.     public:
    20.     MaFenetre();
    21.     public slots:
    22.     // void calculerImc(int poids, int taille);
    23.     private:
    24.     QGroupBox *physique;
    25.     QLabel *t_nom;
    26.     QLabel *t_prenom;
    27.     QLabel *t_poids;
    28.     QLabel *t_kg;
    29.     QLabel *t_taille;
    30.     QLabel *t_cm;
    31.     QLabel *t_imc;
    32.     QLineEdit *nom;
    33.     QLineEdit *prenom;
    34.     QLineEdit *poids;
    35.     QLineEdit *taille;
    36.     QProgressBar *imc;
    37.     QCheckBox *francais;
    38.     QPushButton *bouton;
    39. };
    40. #endif



    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2008 à 21:03:50

      Si tu lis le tuto de m@teo je pense que ça t'aidera beaucoup.
      • Partager sur Facebook
      • Partager sur Twitter
      :)
        29 février 2008 à 19:16:48

        Salut,
        Il me semble que ça vient de ton code :

        1. #include "MaFenetre.h"
        2. MaFenetre::MaFenetre() : QWidget()
        3. {
        4.     // Création d'un widget qui servira de fenêtre
        5. //############################################
        6.     //Je pense que le problème vient d'ici : #
        7.     show();                                //#
        8. //############################################
        9.     setFixedSize(500, 300);
        10.     physique = new QGroupBox("Physique", this);
        11.     physique -> setGeometry(10,10,230,250);
        12.     t_nom = new QLabel ("Nom : ",this);
        13.     t_nom -> move(20,25);
        14.     nom = new QLineEdit (this);
        15.     nom -> move(20,40);
        16.     nom -> setText("charly");
        17.      t_prenom = new QLabel ("Prenom : ",this);
        18.     t_prenom -> move(130,25);
        19.     prenom = new QLineEdit (this);
        20.     prenom -> move(130,40);
        21.     francais = new QCheckBox ("Je suis de nationalité française", this);
        22.     francais -> move(20,80);
        23.     t_poids = new QLabel ("Poids :",this);
        24.     t_poids -> move(20,120);
        25.     poids = new QLineEdit (this);
        26.     poids -> setGeometry(52,115,30,20);
        27.     poids -> setMaxLength(3);
        28.     t_kg = new QLabel ("kg",this);
        29.     t_kg -> move(84,120);
        30.     t_taille = new QLabel ("Taille :",this);
        31.     t_taille -> move(110,120);
        32.     taille = new QLineEdit (this);
        33.     taille -> setGeometry(140,115,30,20);
        34.     taille -> setMaxLength(3);
        35.     t_cm = new QLabel ("cm",this);
        36.     t_cm -> move(172,120);
        37.     t_imc = new QLabel ("IMC :",this);
        38.     t_imc -> move(20,140);
        39.     imc = new QProgressBar (this);
        40.     imc -> setGeometry(20,160,200,15);
        41.     imc -> setValue(32);
        42.    // QObject::connect(poids, SIGNAL(valueChanged(int)), this, SLOT(calculerImc(int)));
        43.      // Création du bouton, ayant pour parent la "fenetre"
        44.       bouton = new QPushButton ("Valider", this);
        45.     bouton -> setText("Valider");
        46.     bouton -> setFixedSize(470,25);
        47.     bouton -> move(10,270);
        48.     // Customisation du bouton
        49.     bouton -> setFont(QFont("Times New roman", 14));
        50.     bouton -> setCursor(Qt::PointingHandCursor);
        51. }


        À ma connaissance, le "show();" ne doit se faire que dans main.cpp.
        Je ne pense pas que tu ais besoin de le faire ici. En tout cas, dans le tuto officiel du site du Zér0, M@teo21 ne le fait pas et chez moi tout s'affiche correctement...
        Essaye de l'enlever et voie si s'était cela.
        @+
        • Partager sur Facebook
        • Partager sur Twitter
          29 février 2008 à 19:18:25

          1. #include <qstring.h>
          2. #include <qapplication.h>
          3. #include <qpushbutton.h>
          4. #include <qprogressbar.h>
          5. #include <qtimer.h>
          6. #include <QProcess.h>
          7. #include <QGroupBox.h>
          8. #include <QComboBox.h>
          9. #include <QLineEdit.h>
          10. #include <QLabel.h>
          11. #include <QCheckBox.h>
          12. #include <QProgressDialog.h>
          13. #include <string.h>


          cf cours
          • Partager sur Facebook
          • Partager sur Twitter
            29 février 2008 à 19:23:11

            Reslaut,
            Pour Chlab_lak, comme Charly a fait touts le includes dans MaFenetre.h (et c'est très bien :) ), il n'y a aucune raison qu'il les mette dans MaFenetre.cpp .
            @+
            • Partager sur Facebook
            • Partager sur Twitter
              29 février 2008 à 19:28:22

              les includes sont tout simplement faux

              Citation : amonte

              Reslaut,
              Pour Chlab_lak, comme Charly a fait touts le includes dans MaFenetre.h (et c'est très bien :) ), il n'y a aucune raison qu'il les mette dans MaFenetre.cpp .
              @+



              - en principe on ne mets que les include nécessaire dans le .hpp et on mets le maximum dans le .cpp

              - <string.h> ? on est en C++ là

              • Partager sur Facebook
              • Partager sur Twitter
                29 février 2008 à 19:40:05

                Citation : Chlab_lak

                les includes sont tout simplement faux


                ha bon ? tu es déjà aller voir les sources de Qt ?
                contenu de QTimer :
                1. #include "qtimer.h"

                contenu de qtimer.h:
                1. #include "../../src/corelib/kernel/qtimer.h"

                :-°
                • Partager sur Facebook
                • Partager sur Twitter
                  29 février 2008 à 21:02:43

                  je dit peut-être une connerie, mais essaie de virer les ".h" des includes, et de mettre les majuscules corrects :

                  1. #include <QString>
                  2. #include <QApplication>
                  3. #include <QPushButton>
                  4. #include <QProgressBar>
                  5. #include <QTimer>
                  6. #include <QProcess>
                  7. #include <QGroupBox>
                  8. #include <QComboBox>
                  9. #include <QLineEdit>
                  10. #include <QLabel>
                  11. #include <QCheckBox>
                  12. #include <QProgressDialog>
                  13. #include <string>


                  je crois que c'est ceci que Chlab_lak voulais dire.

                  edit : disont que ça m'étonnerais que ce soit la source de l'erreur, par contre...

                  et uhh dans MaFenetre.h , quand tu met pas de slots ou de signals, met le aussi en commentaire :

                  1. // public slots:
                  2. // void calculerImc(int poids, int taille);
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                    29 février 2008 à 22:00:16

                    il te manque peut etre :
                    #include <QWidget>
                    • Partager sur Facebook
                    • Partager sur Twitter
                    :)
                      29 février 2008 à 22:40:54

                      non, car en incluant QPushButton et plusieurs autres, on inclue demême QWidget. et puis, ça compile bien, ce qui est étrange...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!

                      Fenetre Qt ne s'ouvre pas

                      × 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