Bonsoir à tous,

J'ai un petit problème. En effet, j'aimerais qu'à la fermeture d'une fenetre, ma fenêtre principale affiche quelque chose. Pour cela, (comme vous le verrez sur le code) je passe par la modification d'un bête booléen qui est déclaré dans ma classe comme attribut. Je fais la transformation de ce dernier dans un slot qui est appelé si on appuie sur le bouton correspondant. Mais, j'ai l'impression qu'il n'est pas modifié.

Voila le code :

Mon .h
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
#ifndef DEF_FENACCUEIL
#define DEF_FENACCUEIL
 
#include <iostream>
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsItem>
 
#include <QColor>
#include <QPainter>
#include <QStyleOption>
#include <QKeyEvent>
#include <QImage>
#include <math.h>
 
#include <time.h>
 
#include <QMainWindow>
//#include <QMdiArea>
#include <QMenuBar>
#include <QAction>
#include <QBrush>
 
#include <QDialog>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QProgressBar>
#include <QGroupBox>
#include <QFrame>
#include <QSpinBox>
#include <QFormLayout>
 
#include "Terrain.h"
 
 
class FenetreAccueil : public QMainWindow
{
	Q_OBJECT
	private:
		QGraphicsView *v;/* vue */
		Terrain *s;/* scene */
		QWidget * principale;
		QProgressBar *barre;
		QDialog * fenetreprog;
 
		QDialog * Choix_jeux;
 
		QAction *actionNouveauJeu;
 
		bool ferme;
 
	public:
		FenetreAccueil();
		void barreProgression();
		bool fenChoixJeux();
 
	public slots:
		void NouveauJeu();
		void PageCommande();
		void Accueil();
		void Aide();
		void ChangeValue(int);
		void FermeFenetre();
 
};
 
 
 
#endif
Et mon .cpp. Pour plus de clarté je ne vous ai pas tout mis, car le fichier est assez gros. Je ne vous met que les fonctions qui bloquent.

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 
 
	/* slot pour le bouton Nouveau Jeu*/
void FenetreAccueil :: NouveauJeu()
{
	QVBoxLayout *layout = new QVBoxLayout;
	actionNouveauJeu->setEnabled(false);
	if(fenChoixJeux())
	{
		barreProgression();
		jeu(v,s);
 
		layout->addWidget(v);
		principale->setLayout(layout);
	}
 
}
 
void FenetreAccueil :: barreProgression()
{
	fenetreprog = new QDialog();
	QGroupBox *groupbox = new QGroupBox(fenetreprog);
 
	QVBoxLayout *group_layout = new QVBoxLayout(groupbox);
	barre = new QProgressBar(groupbox);
	int valeur = 0;
 
	fenetreprog->setWindowTitle("Fenetre de chargement");
	fenetreprog->setGeometry(405,200,300,90);
 
	groupbox->setFixedSize(300,90);
	groupbox->setTitle("Chargement");
	groupbox->setFlat(1);
 
	barre->setMaximum(100);
	barre->setMinimum(0);
	barre->setOrientation(Qt::Horizontal);
	barre->setFixedSize(280, 20);
 
	connect(barre, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
 
	group_layout->addWidget(barre);
	groupbox->setLayout(group_layout);
 
	fenetreprog->show();
 
	connect(barre, SIGNAL(valueChanged(int)), this, SLOT(ChangeValue(int)));	
 
	for(valeur = 0; valeur <= 101; valeur ++)
	{
		barre->setValue(valeur);
	}
	v->activateWindow();
	v->setFocusPolicy(Qt::StrongFocus);
	v->setFocus();
}
 
bool FenetreAccueil :: fenChoixJeux()
{
	Choix_jeux = new QDialog();
	QFrame *frame = new QFrame(Choix_jeux);
	QGroupBox *group_box_multi = new QGroupBox(Choix_jeux);
	QGroupBox *group_box_solo = new QGroupBox(Choix_jeux);
	QFormLayout * layout_solo = new QFormLayout();
	QFormLayout * layout_multi = new QFormLayout();
	QSpinBox * liste_joueur = new QSpinBox();
	QSpinBox * liste_tank_solo = new QSpinBox();
	QSpinBox * liste_tank_multi = new QSpinBox();
	QSpinBox * liste_obstacles_solo = new QSpinBox();
	QSpinBox * liste_obstacles_multi = new QSpinBox();
	QLabel * label_liste_joueur = new QLabel();
	QLabel * label_liste_tank_solo = new QLabel();
	QLabel * label_liste_tank_multi = new QLabel();
	QLabel * label_liste_obstacles_solo = new QLabel();
	QLabel * label_liste_obstacles_multi = new QLabel();
	QPushButton * bouton_Go = new QPushButton("Go!!!",Choix_jeux);
	QPushButton * bouton_Annuler = new QPushButton("Annuler", Choix_jeux);
	ferme = false;
 
	Choix_jeux->move(270, 120);
	Choix_jeux->setFixedSize(400, 300);
	Choix_jeux->setWindowTitle("Faites votre jeu !");
	Choix_jeux->setWindowIcon(QIcon(".//Images//Icone_principal.jpg"));
	Choix_jeux->setModal(true);
 
	frame->setFrameShape(QFrame :: StyledPanel);
	frame->setGeometry(20,20, 360, 260);
	frame->setFrameShadow(QFrame :: Plain);
	frame->setLineWidth(2);
	frame->setMidLineWidth(1);
 
	group_box_solo->setGeometry(30, 50, 167, 180);
	group_box_solo->setCheckable(true);
	group_box_solo->setTitle("Mode un joueur");
 
	liste_tank_solo->setRange(1, 8);
	liste_obstacles_solo->setRange(0,25);
 
	label_liste_tank_solo->setText("Nombre de tanks au départ :");
	label_liste_obstacles_solo->setText("Nombre d'obstacles au départ");
 
	group_box_multi->setGeometry(203,50, 167, 180);
	group_box_multi->setCheckable(true);
	group_box_multi->setTitle("Mode multijoueur");
 
	liste_joueur->setRange(2, 8);
	liste_tank_multi->setRange(1, 8);
	liste_obstacles_multi->setRange(0, 20);
 
	label_liste_joueur->setText("Choississez le nombre de particpants");
	label_liste_tank_multi->setText("Nombre de tanks au départ :");
	label_liste_obstacles_multi->setText("Nombre d'obstacles au départ");
 
	layout_solo->addRow(label_liste_tank_solo);
	layout_solo->addRow(liste_tank_solo);
 
	layout_solo->addRow(label_liste_obstacles_solo);
	layout_solo->addRow(liste_obstacles_solo);
 
	layout_multi->addRow(label_liste_joueur);
	layout_multi->addRow(liste_joueur);
 
	layout_multi->addRow(label_liste_tank_multi);
	layout_multi->addRow(liste_tank_multi);
 
	layout_multi->addRow(label_liste_obstacles_multi);
	layout_multi->addRow(liste_obstacles_multi);
 
	group_box_solo->setLayout(layout_solo);
	group_box_multi->setLayout(layout_multi);
 
	bouton_Go->move(105,250);
	bouton_Annuler->move(220,250);
 
	Choix_jeux->show();
 
	connect(bouton_Go, SIGNAL(clicked()),this,SLOT(FermeFenetre()));
	connect(bouton_Annuler, SIGNAL(clicked()), Choix_jeux, SLOT(close()));
 
	return true;
 
}
 
void FenetreAccueil :: FermeFenetre()
{
	Choix_jeux->close();
	//ferme = true;
}
Donc si l'un d'entre vous a un idée ou même une meilleure manière de faire : Je suis preneur.
Par ailleurs, j'espère ne pas me tromper si je dis que les entiers ou booléens déclarés dans la classe peut être modifier partout dans les fonctions de cette classe et que ce n'est pas ça l'erreur.
Merci d'avance.