CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme avec Qt

alexleboss38
alexleboss38
Niveau 3
14 mars 2008 à 16:46:36

Bonjour,
en tant qu'apprenti programmeur, j'ai un probleme avec Qt, en fait, je voudrai envoyer un SLOT avec plusieurs paramètres mais à la compilation il ne me dit alors que le SLOT n'est pas pris en compte, aidez moi svp

voila le code que j'ai essayer et qui n'a pas marcher

QObject::connect(m_boutonAttaque, SIGNAL(clicked()), this, SLOT(attaquer(david, c, d)));

aidez moi svp !!

guyver2
guyver2
Niveau 10
14 mars 2008 à 17:17:31

tu devrais nous donner ton code. (ici par exemple : http://rafb.net/paste/)
aisni que le message d'erreur du compilateur.

Voila pour les remarques d'ordre générales, maintenant pour ton probleme, il faut que tu apprenne a te servir des slots et signaux en Qt. En l'occurence ton signal et ton slot n'ont pas les meme signatures. Il sont donc incompatibles.
Il te faut un slot du type suivant :
void attaquer();

alexleboss38
alexleboss38
Niveau 3
14 mars 2008 à 18:37:17

LE problème ne vient pas de ma fonction vois attaquer(), mais c'est le slot qui ne reconnait pas tous les paramètres ou ma fonction qui les prend mal je ne sais pas

guyver2
guyver2
Niveau 10
14 mars 2008 à 21:40:59

le probleme vient du fait que tu connecte deux fonctions qui n'ont pas les meme parametres en entrée.

clicked() -> 0 parametres
attaquer(david, c, d) -> 3 parametres

il faut soit que tu ais un signal avec 3 parametres (de meme types que ceux de "attaquer"), soit que ta fonction attaquer n'ai aucun parametre.
Lit la doc ...
"The signals and slots mechanism is type safe: The signature of a signal must match the signature of the receiving slot. "

alexleboss38
alexleboss38
Niveau 3
14 mars 2008 à 21:51:22

merci de ta réponse, donc il faudrai que je créer mon signal qui prend 3 paramètres, c'est sa

guyver2
guyver2
Niveau 10
14 mars 2008 à 22:23:09

il faut soit que tu crée un signal a 3 parametres, soit un slot a un seul parametres.
Perso je ferais comme ceci :

faire une petite fonction slot avec aucun parametres

Dans le .h
slot
void attaquerSlot();

Dans le .cpp
void attaquerSlot(){
// ici on va appeler la vrai fonctions qui fait ce que tu voulais
attaquer(david, c, d);
}
QObject::connect(m_boutonAttaque, SIGNAL(clicked()), this, SLOT(attaquerSlot()));

et voila, le probleme est contourné

alexleboss38
alexleboss38
Niveau 3
15 mars 2008 à 06:46:11

Oui, je peux faire come ceci, mais le probleme qui se pose est différent, je ne peu pas passer mon object david de la class Persos car il ne les reconnait pas , c'est pour cela que je veu les faire passer directement par le slot. Les deux autres valeurs ne peuvent pas non plus etre transmise car elle hérite de la classe Persos.

c = goliath.chercherArmure();
etc ...

alexleboss38
alexleboss38
Niveau 3
15 mars 2008 à 08:06:28

merci tout de même de vos réponses, mais je me suis inspiré de Qt ^^, en fait je déclarer mes objects david et goliath à l'intérieur de la fonction principale de Fenetre.cpp, or les objects n'était pas accéssible de partout dans le fichier alors j'ai pensé à declarer mes objects dans le Fenetre.h

private:

Persos *david, *goliath;

et le probleme est réglé !!!!!, voila pour ceux qui chercherai au cas ou ^^

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment