Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt]Appeller une fonction

    20 décembre 2006 à 20:25:59

    Bonjour à tous !
    Voila ça fait désormais plusieurs heures que j'essaye d'appeller une fonction lorsque l'utilisateur clique sur un bouton, mais je n'arrive vraiment pas j'ai regardé les exemples du tutorial mais rien n'y fait je suis bloqué, donc si quelqu'un pouvait me donner un exemple simple de comment appeler une fonction (si possible une méthode) quelconque ce serait génial.
    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2006 à 17:40:43

      Up !

      minirop montre toi ! Je sais que tu sais comment faire :lol:

      Dans la doc je trouve :
      class MyWidget : public QWidget
       {
           Q_OBJECT

       public:
           MyWidget();

       signals:
           void buttonClicked();

       private:
           QPushButton *myButton;
       };

       MyWidget::MyWidget()
       {
           myButton = new QPushButton(this);
           connect(myButton‚ SIGNAL(clicked())
                   thisSIGNAL(buttonClicked()));
       }


      J'ai essayé un code de ce type mais je reçevais l'erreur :
      Object::connect: No such slot QWidget::modifier_valeur()

      Donc voila je comprends pas bien comment faire ...
      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2006 à 18:02:16

        public slots :
        pas
        signal
        cf la doc hein...............
        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2006 à 18:10:41

          Merci !
          Mais l'exemple que je prends est celui de la doc ! Moi j'ai bien mis SLOT (cf erreur: "... no such slot ...")
          Donc merci mais ce n'est pas ça ...
          Si vous voulez mon code dites le !
          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2006 à 18:15:40

            "j'ai bien mis SLOT"

            VS

            signals:
            void buttonClicked();

            So ??
            • Partager sur Facebook
            • Partager sur Twitter
              21 décembre 2006 à 18:19:35

              Mais ça c'est l'exemple de la doc :D
              Bon pour eviter les confusions voici mon code :

              main.cpp


              #include <qapplication.h>
              #include <qpushbutton.h>
              #include <qfont.h>
              #include <qwidget.h>

              #include "main.hpp"


              int main(int argc‚ char **argv)
              {
                  QApplication Fenetre(argc‚ argv)// création de la fenetre
                  QApplication::setFont(QFont("Comic Sans MS"18‚ QFont::Bold));
                      // on modifie la police de l'application.

                  MonWidget wFenetre;
                  Quitter wFenetre2;

                  if (wFenetre.valeur == 1)
                      wFenetre.show(); // on affiche la fenetre 1
                  else
                      wFenetre2.show();

                  return Fenetre.exec(); // on a fini
              }


              main.hpp


              #include <qapplication.h>
              #include <qpushbutton.h>
              #include <qfont.h>
              #include <qwidget.h>

              using namespace std;

              class MonWidget : public QWidget
              {
                  public :
                      MonWidget(QWidget *parent=0);
                      int valeur;
                  public slots : // j'ai essayé avec et sans cette ligne‚ mais rien ne marche
                      void modifier_valeur();
              };

              class Quitter : public QWidget
              {
                  public:
                      Quitter(QWidget *parent=0);
              };


              methodes.cpp


              #include <qapplication.h>
              #include <qpushbutton.h>
              #include <qfont.h>
              #include <qwidget.h>

              #include <fstream>
              #include <iostream>

              #include "main.hpp"

              MonWidget::MonWidget(QWidget *parent)
                        :QWidget(parent)
              {
                  setWindowTitle("Premiere application Qt4");
                  resize(500250);

                  QPushButton *Texte = new QPushButton(tr("Bienvenue dans ma \npremiere application Qt !")this);
                  Texte–>setGeometry(55490185);

                  QPushButton *Bouton = new QPushButton(tr("Continuer")this);
                  Bouton–>setGeometry(519549050);

                  connect(Bouton‚ SIGNAL(released())this‚ SLOT(modifier_valeur()));

                  valeur = 1;
              }

              void MonWidget::modifier_valeur()
              {
                  valeur = 2;
                  ofstream Fichier("./valeur.txt");
                  if(!Fichier)
                      cout << "Bug" << endl;
                  else
                      Fichier<< valeur;
                  Fichier.close();
              }

              Quitter::Quitter(QWidget *parent)
                        :QWidget(parent)
              {
                  // creation et personnalisation des différents boutons.
                  QPushButton *Quitter = new QPushButton("Quitter"this);
                  Quitter–>setGeometry(101018030);
                  Quitter–>setFont(QFont("Times"15‚ QFont::Normal));
                  QObject::connect(Quitter‚ SIGNAL(clicked())‚ qApp‚ SLOT(quit()));
              }


              Merci d'avance de ton aide Kayl !

              EDIT: C'est bion j'ai trouvé j'ai oublié : Q_OBJECT; au début de ma classe ^^
              • Partager sur Facebook
              • Partager sur Twitter

              [Qt]Appeller une fonction

              × 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