C++/QT (slot avec parametres)

Bonjour,
je suis entrain de programmer le tour de hanoi avec C++ / QT et j'ai un probleme au niveau des slots
j'ai ecris :
********
QObject::connect(m_solution, SIGNAL(clicked()), this, SLOT(deplacer(int 1,int 3)));
void MaFenetre::deplacer(int x,int y)
{
deplacerAB();
}
***********
avec deplacerAB est un slot . deplacer (int x, int y) ne contient pas seulement le slot deplacerAB() mais je veux juste que ça marche.
donc mon prbleme est le slot avec des parametres:comment les ecrires
j'espere que vous m'aidez
merci
Configuration: Windows XP
Opera 9.51

11 réponses

  1. merci pour votre reponse snipeur.
    j'ai fais comme tu m'as dis mais ça marche pas.
    en plus où je vais entrer mes parametres ?
    deplacer(1,2) .? où entrer ces 2 entiers?
    merci
    -1
    1. Contributeur
      Je sais pas ?
      emit clicked(1,2) ? ou alors grace aux paramètre par défaut :
      QObject::connect(m_solution, SIGNAL(clicked()), this, SLOT(deplacer()));
      void MaFenetre::deplacer(int x=1,int y=2)
      {
      deplacerAB();
      }
      

      que veux dire "ça marche pas" ? problème de compilation ou à l'exécution ?
      à l'exécution, assure toi que le signal est bien émit.
      -2
      1. fais j'ai comme ça :
        ***
        MaFenetre.cpp
        ------------
        QObject::connect(m_solution, SIGNAL(clicked(int,int)), this, SLOT(deplacer(int,int)));
        void MaFenetre::deplacer(int x=1,int y=2)
        {
        deplacerAB();
        }
        ****
        MaFenetre.h
        ---------
        void MaFenetre::deplacer(int x,int y);
        *****

        le programme se compile et s'execute correctement mais en appuyant sur le bouton solution : rien ne se passe!!!!
        j'ai essayer ce meme code mais son parametre pour le slot deplacer() : il marche correctement
        mais bien sur j'ai besoin de ces parametres car mon programme est tres plus long que ça.
        merci de m'aider
        -2
        1. Contributeur
          fait un affichage de x et y
          void MaFenetre::deplacer(int x=1,int y=2)
          {printf("%d %d\n",x,y);
          deplacerAB();
          }
          mais comme tu utilises QObject::connect(m_solution, SIGNAL(clicked(int,int)), this, SLOT(deplacer(int,int))); c'est à dire avec des paramètre, il est normal qu'il ne conserve pas ceux par défaut. je t'avais dit d'essayer
          QObject::connect(m_solution, SIGNAL(clicked()), this, SLOT(deplacer())); là il devrai prendre les arguments par défaut.
          sinon, il faut peux être rajouter des signaux à m_solution de manière à faire ce que tu veux, ou alors un autre SLOT à MaFenetre :
          QObject::connect(m_solution, SIGNAL(clicked()), this, SLOT(deplacer_1()));
          void MaFenetre::deplacer_1(void)
          {
          deplacer(1,2);
          }
          
          -2
          1. c'est pas le probleme au niveau des entiers 1 ou 3
            je l'ai met quelconque
            en plus je peux pas faire ni printf ni cout car je suis pas sous console
            -2
            1. Contributeur
              Explique mieux ce que tu veux faire alors.
              utilise printf, et lance ton programme depuis la console. Si tu es sous windows vire l'option -mwindows lors de l'édition des liens.
              -2
              1. salut
                mon probleme est que mon prog ne fonctionne pas en utilisant un slot avec parametre
                mon exemple est:
                QObject::connect(m_solution, SIGNAL(clicked(int,int)), this, SLOT(deplacer(int,int)));
                void MaFenetre::deplacer(int x=1,int y=2)
                {
                deplacerAB();
                }

                mais ça pas marcher
                .
                -2
                1. Contributeur
                  ça sert à rien de te répété, si je te dit que je ne comprends pas et plus d'info, c'est pour que tu m'en dise plus !
                  vérifie que le signal clicked(int,int) existe bien dans on m_solution. Car il me semble que comme SIGNAL est une macro, il peut accepter n'importe quoi.
                  que dit le printf ?
                  -2
                  1. Salut,

                    J'ai crée un nouveau forum sur le C++ et toutes les librairies graphiques. (qt entre autres)

                    Il y a peu de membres, mais surement il y en a qui te répondront.

                    J'espère t'y voir.

                    https://buildcpp.xooit.fr/index.php
                    -3
                    1. Contributeur
                      salut, il faut que ton signal émette des paramètre aussi. Sinon, à quoi veux tu qu'ils soient fixé ?? Donc :
                      QObject::connect(m_solution, SIGNAL(clicked(int,int)), this, SLOT(deplacer(int,int)));
                      surtout qu'il me semble bien que ce signal existe.
                      -3