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 :
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
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
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;
    }
}
Ce code me fait les 105 identiques erreurs suivantes (oui je savais pas comment copier les erreurs alors voilà) :
Nom : Capture.PNG
Affichages : 334
Taille : 61,1 Ko

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