C++/QT (slot avec parametres)

Fermé
houcem - 26 août 2008 à 13:46
tifo85 Messages postés 4 Date d'inscription vendredi 6 mars 2009 Statut Membre Dernière intervention 23 août 2009 - 23 août 2009 à 02:06
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

11 réponses

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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
26 août 2008 à 14:25
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
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
26 août 2008 à 14:54
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
26 août 2008 à 16:00
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
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 août 2008 à 08:45
ç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
tifo85 Messages postés 4 Date d'inscription vendredi 6 mars 2009 Statut Membre Dernière intervention 23 août 2009
23 août 2009 à 02:06
si tu veut il ya une travail
-2
Elwish Messages postés 40 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 26 août 2008 3
26 août 2008 à 14:04
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
26 août 2008 à 14:17
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