Bonjour,
Voilà mon problème. J'essaye de faire afficher dans le centralWidget des widgets différents en fonction des choix dans le menu. J'ai donc créé un mainWindow, des classes filles qui génèrent les widget à stocker dans le stackedWidget.
Je compile, le programme se lance, mais rien n'apparaît dans le QStackedWidget...
Et là, depuis quelques jours, je suis un peu perdu... Si vous voyez ce qui cloche, je serais ravi d'avoir vos retours :
Voici mon MainWindow.h
mon mainWindow.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
42 #ifndef FENPRINCIPALE_H #define FENPRINCIPALE_H #include <QMainWindow> #include <QObject> #include <QWidget> #include <QStackedWidget> #include <QStackedLayout> #include "About.h" #include "CentralCatGen.h" #include "CentralDefault.h" class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); public slots: void ouvrirAbout(); void afficherStacked(int onglet); private: QStackedWidget *centralWidget; CentralDefault *defaut; CentralCatGen *catGen; QPushButton *bouton1; QPushButton *bouton2; QPushButton *bouton3; QAction *actionQuitter; QAction *actionCatGeneral; QAction *actionAbout; About *about; }; #endif // FENPRINCIPALE_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 #include "MainWindow.h" #include "About.h" #include "CentralCatGen.h" #include "CentralDefault.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { //le menu /* IL s'affiche très bien pas de souci de ce côté là, enlevé pour lisibilité */ //central widget CentralDefault centralDefault; CentralCatGen centralCatGen; centralWidget = new QStackedWidget(this); defaut = new CentralDefault(this); //le layout par défaut catGen = new CentralCatGen(this); //le layout CatGen centralWidget->addWidget(defaut); centralWidget->addWidget(catGen); setCentralWidget(centralWidget); //les connect du menu connect(actionQuitter,SIGNAL(triggered()),qApp, SLOT(quit())); connect(actionAbout,SIGNAL(triggered()),this, SLOT(ouvrirAbout())); connect(actionCatGeneral,SIGNAL(triggered()),this, SLOT(afficherStacked(1))); } void MainWindow::ouvrirAbout() { About about; about.setModal(true); about.exec(); } void MainWindow::afficherStacked(int onglet) { centralWidget->setCurrentIndex(onglet); }
Voici le header .h d'un des deux widgets (les deux sont quasi identiques, à l'exception du label des boutons)... Je n'en mets qu'un pour ne pas allourdir. La première classe est CentralDefault (celle qui s'affiche au démarrage), la seconde est CentralCatGen (choisi par un bouton sur centralDefault ou par un menu - en cours d'utilisation du prgm)
Et le .cpp correspondant
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 #ifndef CENTRALDEFAULT_H #define CENTRALDEFAULT_H #include <QObject> #include <QWidget> #include <QMainWindow> #include <QPushButton> #include <QVBoxLayout> class CentralDefault : public QWidget { Q_OBJECT public: explicit CentralDefault(QWidget *parent = nullptr); private: QWidget *central; QVBoxLayout *vlay; }; #endif // CENTRALDEFAULT_H
Merci d'avance pour vos aides
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 #include <QDialog> #include <QWidget> #include <QPushButton> #include <QLabel> #include <QVBoxLayout> #include <QPixmap> #include <QStackedWidget> #include <QString> #include "MainWindow.h" #include "CentralDefault.h" CentralDefault::CentralDefault(QWidget *parent) : QWidget(parent) { QWidget *central =new QWidget; QPushButton *bouton1 = new QPushButton("Bouton 1"); QPushButton *bouton2 = new QPushButton("Bouton 2"); QPushButton *bouton3 = new QPushButton("Bouton 3"); QVBoxLayout *vlay = new QVBoxLayout; vlay->addWidget(bouton1); vlay->addWidget(bouton2); vlay->addWidget(bouton3); central->setLayout(vlay); }
Partager