Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dernier chapitre Qt

Problème avec exo proposé

Sujet résolu
    25 février 2008 à 12:44:54

    Salut,
    A la fin de son dernier chapitre, M@teo propose de modifier le code pour implémenter un constructeur permettant de choisir la taille de la fenêtre dans le main.cpp
    Mon code compile mais rien ne s'affiche. Je précise que le processus est bien présent dans le gestionnaire des tâches.

    maFentre.h
    1. #ifndef MAFENETRE_H_INCLUDED
    2. #define MAFENETRE_H_INCLUDED
    3. #include <QWidget>
    4. #include <QPushButton>
    5. #include <QSize>
    6. class MaFenetre : public QWidget
    7. {
    8.     private:
    9.     QPushButton *bouton;
    10.     public:
    11.     MaFenetre();
    12.     MaFenetre (QSize);
    13. };
    14. #endif


    maFenetre.cpp
    1. #include "maFenetre.h"
    2. MaFenetre::MaFenetre() : QWidget()
    3. {
    4.     setFixedSize(300, 150);
    5.     bouton = new QPushButton("Pimp mon bouton !", this);
    6.     bouton->setFont(QFont("Comic Sans MS", 14));
    7.     bouton->setCursor(Qt::PointingHandCursor);
    8.     bouton->move(60, 50);
    9. }
    10. MaFenetre::MaFenetre(QSize) : QWidget()
    11. {
    12.     setFixedSize(QSize());
    13.     bouton = new QPushButton("Pimp mon bouton !", this);
    14.     bouton->setFont(QFont("Comic Sans MS", 14));
    15.     bouton->setCursor(Qt::PointingHandCursor);
    16.     bouton->move(60, 50);
    17. }


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


    Merci de m'éclairer.
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2008 à 12:54:44

      setFixedSize(QSize());

      Tu passes une taille nulle en faisant ça(tu appelles leconstructeur par default de QSize)

      Correction(non testé) :
      1. MaFenetre::MaFenetre(QSize taille) : QWidget()
      2. {
      3.     setFixedSize(taille);
      4.     bouton = new QPushButton("Pimp mon bouton !", this);
      5.     bouton->setFont(QFont("Comic Sans MS", 14));
      6.     bouton->setCursor(Qt::PointingHandCursor);
      7.     bouton->move(60, 50);
      8. }

      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2008 à 13:54:48

        Merci à toi !
        Je n'avais pas fait gaffe...
        En fait l'erreur venait du fait que je n'avais pas donné de variable en paramètre au constructeur (j'avais mis QSize tout court).
        • Partager sur Facebook
        • Partager sur Twitter
          26 février 2008 à 12:24:54

          comment convertir les chiffres (résultat d'un calcul par exemple) en texte pour l'afficher en Qt ?
          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2008 à 12:59:27

            Regarde du côté de QString.
            • Partager sur Facebook
            • Partager sur Twitter
              2 mars 2008 à 18:39:25

              Bonjour jerom71,

              J'ai vu dans le forum que vous résolu le problème exposé ci-dessus. Merci de jetter un oeil sur mon problème pour m'aider s'il vous plaît...

              Après son tuto sur le Qt, Ma@teo21 a donné un exercice où on doit surcharger le constructeur pour pouvoir définir la taille de la fenêtre dans le main.

              J'ai fait ceci :

              class MaFenetre : public QWidget
              {

              public:
              MaFenetre(QSize(int x, int y));
              .....
              }

              Pour l'implémentation du constructeur, j'ai mis:

              MaFenetre::MaFenetre(QSize(int x , int y)
              {
              setFixedSize(QSize(int x , int y);
              ....
              }

              Dans le main, j'ai mis:

              int main( int argc, char **argv )
              {
              QApplication app( argc, argv );

              MaFenetre a(QSize(300,300);
              a.show();

              return app.exec();
              }

              La compilation montre une erreur dans le main à la ligne suivante:
              MaFenetre a(QSize(300,300);

              Comment avez-vous résolu votre problème?
              Merci d'avance...
              • Partager sur Facebook
              • Partager sur Twitter
                2 mars 2008 à 18:59:35

                1. class MaFenetre : public QWidget
                2. {
                3. public:
                4. MaFenetre(QSize(int x, int y));
                5. .....
                6. }
                7. //Pour l'implémentation du constructeur, j'ai mis:
                8. MaFenetre::MaFenetre(QSize(int x , int y)
                9. {
                10. setFixedSize(QSize(int x , int y);
                11. ....
                12. }
                13. //Dans le main, j'ai mis:
                14. int main( int argc, char **argv )
                15. {
                16. QApplication app( argc, argv );
                17. MaFenetre a(QSize(300,300);
                18. a.show();
                19. return app.exec();
                20. }


                plus lisible non ? tu n'es pas assez clair !C'est quoi l'erreur de compilation que C::B t'envoie ?
                • Partager sur Facebook
                • Partager sur Twitter
                  3 mars 2008 à 20:01:31

                  Ton erreur est dans le constructeur.
                  Tu dois enlever les paramètres à QSize.

                  Partout dans ton code (ailleurs que dans le main bien sûr) tu dois remplacer
                  1. QSize(int x , int y)

                  Par
                  1. QSize()
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 mars 2008 à 13:29:40

                    correct ... ça ne correspond pas au constructeur de QSize() sinon ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Dernier chapitre Qt

                    × 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