QStackedWidget dans QMainWindow : les widgets ne s'affichent pas
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
Code:
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 |
mon mainWindow.cpp
Code:
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)
Code:
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 |
Et le .cpp correspondant
Code:
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);
} |
Merci d'avance pour vos aides :)