bonjour tout le monde,
J'essaie de réaliser un mahjong en C++, le programme tourne en mode console et j'essaie maintenant de faire l'interface graphique avec Qt mais j'ai quelques problèmes ... évidement !
Tout d'abord pour mon interface j'ai créé les classes :
- PlateauLayout héritant de QGridLayout (pour représenter facilement mes tulles),
- Fenetre héritant de QMainWindow qui sera la fenêtre principale,
- Bouton héritant de QPushButton, qui représentera les tulles et qui contient mes slots concernant les boutons.
Le problème est que je crée dans le main un objet Fenetre. Les éléments déclarés dans le constructeur ne sont pas accessibles hors du constructeur, c'est pourquoi je suis obligée de crée des attributs de Fenetre pour réutiliser ces éléments dans d'autres classes (notamment les Boutons que je manipule pas mal).
Nouveau problème, si je crée un attribut statique dans la classe fenetre, je ne peux pas l'appeler dans une autre classe car l'objet Fenetre n'est pas accessible dans les autres classes.
Un exemple pour vous aider à voir :
Je mets un attribut dans la classe Fenetre, j'instancie cet attribut dans le constructeur de fenetre, puis je veux l'utiliser dans des méthodes de la classe Bouton. Je ne peux pas vraiment l'appeler dans la classe Bouton car l'objet Fenetre créé dans le main ne peut pas être appelé dans Bouton (ou alors je ne sais pas comment faire). La solution que j'ai trouvé pour l'instant est de mettre cet attribut en statique, mais je ne pense pas que ce soit la solution la plus propre. Ce type de problème ne se pose pas qu'une fois dans mon code, je suppose donc que d'autres personnes ont eu le problème avant moi, et il doit bien exister un moyen plus propre que de passer par des variables statiques.
Autre question, qui pourrait résoudre en partie mon problème : Y a t il moyen de faire des multi_array (ou tableau à plusieurs dimensions équivalent) de QPushButton?
Merci d'avance si vous avez saisi mon problème du premier coup, et n'hésitez pas à me demander des précisions sinon (notamment le code source si besoin)
Partager