Bonjour à tous,
J'ai un petit problème. J'ai un jeu à faire mais j'ai un soucis avec mes slots.
Voila j'aimerais créer un slot qui me permettrait d'afficher le jeu quand je clique dessus. Par conséquent j'ai généré une QMainWindows pour l'accueil avec un menu déroulant et je voudrais que lorsque j'appuie sur "Nouveau jeu" le programme ouvre un QGraphicView avec une scène et tout le reste dans la zone MDI . Mon problème est que ma View ne s'affiche pas et je pense que cela vient de mon slot que je fais mal.
Pouvez vous m'aider?? (Je met le code en dessous)
Voila le QMainWindows et le slot
Et là la fonction jeu():
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 # include "FenetreAccueil.h" # include "Jeu.h" FenetreAccueil :: FenetreAccueil() { QMenu *menuFichier = menuBar()->addMenu("&Fichier"); //QMenu *menuEdition = menuBar()->addMenu("&Edition"); //QMenu *menuAffichage = menuBar()->addMenu("&Affichage"); QAction *actionNouveauJeu = new QAction("&Nouveau jeu", this); menuFichier->addAction(actionNouveauJeu); QAction *actionQuitter = new QAction("&Quitter", this); menuFichier->addAction(actionQuitter); connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit())); QObject::connect(actionNouveauJeu, SIGNAL(triggered()), qApp, SLOT(NouveauJeu())); QMdiArea *principale = new QMdiArea; setCentralWidget(principale); update(); } void FenetreAccueil :: NouveauJeu() { jeu(); } int main(int argc, char **argv) { QApplication app(argc, argv); FenetreAccueil fen; fen.show(); return app.exec(); }
Juste pour préciser le but de ma fonction: Je veux que le jeu s'affiche dans la zone centrale que j'ai déclarer de type MDI
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 #include "Jeu.h" void jeu() { srand(time(NULL)); QGraphicsView v;/* vue */ QGraphicsScene s(&v);/* scene */ tank tank; W widget; obstacle *ob; obstacle *ob1; ob = new obstacle(1,2,3,4); ob1 = new obstacle(3,2,3,4); s.setBackgroundBrush(QBrush(QColor(51,179,45,255))); s.addItem(&widget); s.addItem(&tank); s.addItem(ob); s.addItem(ob1); while(s.collidingItems(ob).isEmpty() == false) { delete(ob); ob = new obstacle(1,2,3,4); } while(s.collidingItems(ob1).isEmpty() == false) { delete(ob1); ob1 = new obstacle(3,2,3,4); } tank.setFocus();/* donne le focus à l'item */ /* Si vous enlevez la ligne si dessus il faudra cliquer sur le rectangle pour lui donner le focus */ v.resize(800, 600); v.mapToScene(200,300); v.setScene(&s);/* definition de la scene dans la vue */ v.show(); }
Partager