C++/QT (slot avec parametres)

houcem -  
tifo85 Messages postés 8 Statut Membre -
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. houcem
     
    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
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  3. houcem
     
    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
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. houcem
     
    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
  7. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  8. houcem
     
    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
  9. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    ç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
  10. tifo85 Messages postés 8 Statut Membre
     
    si tu veut il ya une travail
    -2
  11. Elwish Messages postés 40 Statut Membre 3
     
    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
  12. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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