Salut à tous !
J'ai récemment commencé à créer un démineur (le bon vieux temps), mais je me suis vite retrouvé bloqué à un problème tout simple : la taille de la grille de jeu pouvant changer selon la difficulté, il est selon moi fort mal pensé de créer des centaines de boutons et de les afficher selon la difficulté choisie. Par conséquent, la solution serait de créer ces boutons lors du choix de la difficulté, et de les stocker dans une liste pour pouvoir les gérer facilement. J'ai donc fait le code suivant (j'ai tout codé sans le designer):
L'entête :
Le .cpp :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #ifndef WIN_MAIN_H #define WIN_MAIN_H #include <QMainWindow> #include <QPushButton> #include <QList> enum size_e { PETIT=10, //10x10 MOYEN=20, //20x20 GRAND=30 //30x30 }; class WIN_main : public QMainWindow { Q_OBJECT private slots: void initialize(); void generate_game(size_e Size); public: WIN_main(QWidget *parent = 0); ~WIN_main(); private: QPushButton* BUT_restart; int const SIZE_BUTTON=20; QList<QPushButton> button_grid; }; #endif // WIN_MAIN_H
Ce code me fait les 105 identiques erreurs suivantes (oui je savais pas comment copier les erreurs alors voilà) :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #include "win_main.h" WIN_main::WIN_main(QWidget *parent) : QMainWindow(parent) { initialize(); } WIN_main::~WIN_main() { } void WIN_main::initialize() { this->setFixedSize(300,350); BUT_restart=new QPushButton(tr("Restart"),this); BUT_restart->setGeometry(10,10,50,20); generate_game(MOYEN); QPushButton button("",this); button.setGeometry(100,100,50,50); button.show(); } void WIN_main::generate_game(size_e Size) { int x=10; int y=10; for(int i=0;i<Size;i++) { for(int i=0;i<Size;i++) { QPushButton button("",this); button.setGeometry(x,y,SIZE_BUTTON,SIZE_BUTTON); button.show(); button_grid.push_back(button); x+=SIZE_BUTTON; } y+=SIZE_BUTTON; } }
Premièrement les boutons ne s'affichent pas s'ils sont déclarés comme ça (j'en ai déclaré un dans la fonction initialize), et deuxièmement je ne peux pas les mettre dans une QList car on ne peut pas copier un bouton! La solution serait donc de pouvoir créer des attributs privés PENDANT l'exécution du programme!! Et là j'avoue que je sèche
Partager