Bonjour, tout le monde.
Je vous expose mon problème:
Je fais actuellement un petit programme pour m'exercer en C++ et Qt, qui affiche dans une fenetre une phase de combat entre plusieurs personnages.
Ma classe Personnage hérite de QObject et comporte donc des attributs de différents type, QString, int... et une class fenêtre qui affiche les stats des personnages ainsi que la phase de combat via un QTextEdit. dans cette fenêtre j'ai un QPushButton "attaquer" qui ouvre une fenêtre de ciblage, qui initialise via une boucle plusieurs QPushButton selon le nombre de personnages présents dans la phase de combats.
Dans ma boucle, je créé donc les boutons ayant pour nom, le nom des différents personnage. puis j'applique un QSignalMapper à mes boutons.
En sortant de la boucle je connecte donc mon QSignalMapper a ma fonction attaquer de la classe personnage, mais voila cette fonction prend en paramètre un pointeur personnage.
ma question: Dois-je créer une classe héritant de QSignalMapper pour créer un signal: mapped(Personnage*)? ou existe-t-il une meilleure facon de faire?
J'espère avoir été assez précis dans ce que je voulais, j'ai chercher un peu partout comment je pouvais procéder en vain, donc si vous avez à la limite un lien que je pourrais utiliser.
le code de ma boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 signalMapAlliee = new QSignalMapper(this); for (int i =0; i < m_alliee->size(); ++i) { personnageTemp = new Personnage; personnageTemp = m_alliee->at(i); QString nom = personnageTemp->getNom(); cibleAlliee[i] = new QPushButton(nom); cibleAlliee[i]->setFixedWidth(150); cibleAlliee[i]->setFlat(true); groupCibleAlliee->addButton(cibleAlliee[i]); layoutCibleAlliee->addWidget(cibleAlliee[i]); connect(cibleAlliee[i], SIGNAL(clicked()), signalMapAlliee, SLOT(map())); signalMapAlliee->setMapping(cibleAlliee[i], m_alliee->at(i)); } connect(signalMapAlliee, SIGNAL(mapped(Personnage*)), m_personnage, SLOT(attaquer(Personnage*)));
Merci d'avance, etant débutant je suis sur que ce n'est pas si compliquer que ca.
Partager