Hello tout le monde !
Alors voilà, je débute en C++ et Qt, et j'aimerai que lorsque je clique sur un bouton, je reste dans la même fenêtre, mais le layout change (comme pour le web, lorsqu'on clique sur un lien, on garde la même fenêtre, mais la page change)
Mes deux questions sont :
1. Actuellement j'essaye d’utilisé QStackedWidget mais y a t-il un moyens plus approprié pour réaliser cela ?
2. Le problème avec mon code, s'est que j'arrivais directement sur la fenêtre secondaire alors j'ai modifié quelques trucs...et maintenant j'arrive bien sur la fenêtre principale, mais lorsque je clique sur le bouton, rien ne se passe:
Fenetre Principale .h
Fenetre Principale .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 #ifndef FENETREPRINCIPALE_H #define FENETREPRINCIPALE_H #include <QtWidgets> #include "FenetreSecondaire.h" namespace Ui { class FenetrePrincipale; } class FenetrePrincipale : public QWidget { Q_OBJECT public: explicit FenetrePrincipale(QWidget *parent = 0); ~FenetrePrincipale(); public slots: void changerPage(); private: Ui::FenetrePrincipale *ui; QStackedWidget *m_stacked_widget; FenetreSecondaire *m_fenetre_secondaire; }; #endif // FENETREPRINCIPALE_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 #include "FenetrePrincipale.h" #include "ui_FenetrePrincipale.h" FenetrePrincipale::FenetrePrincipale(QWidget *parent) : QWidget(parent), ui(new Ui::FenetrePrincipale) { ui->setupUi(this); m_stacked_widget = new QStackedWidget(this); m_fenetre_secondaire = new FenetreSecondaire(this); m_stacked_widget->addWidget(m_fenetre_secondaire); connect(ui->bouton, SIGNAL(clicked()), this, SLOT(changerPage())); } FenetrePrincipale::~FenetrePrincipale() { delete ui; } void FenetrePrincipale::changerPage() { m_stacked_widget->setCurrentWidget(m_fenetre_secondaire); }
Fenetre Secondaire .h
Fenetre Secondaire .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 #ifndef FENETRESECONDAIRE_H #define FENETRESECONDAIRE_H #include <QtWidgets> namespace Ui { class FenetreSecondaire; } class FenetreSecondaire : public QWidget { Q_OBJECT public: explicit FenetreSecondaire(QWidget *parent = 0); ~FenetreSecondaire(); private: Ui::FenetreSecondaire *ui; }; #endif // FENETRESECONDAIRE_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 #include "FenetreSecondaire.h" #include "ui_FenetreSecondaire.h" FenetreSecondaire::FenetreSecondaire(QWidget *parent) : QWidget(parent), ui(new Ui::FenetreSecondaire) { ui->setupUi(this); } FenetreSecondaire::~FenetreSecondaire() { delete ui; }
Et enfin le main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "FenetrePrincipale.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); FenetrePrincipale w; w.show(); return a.exec(); }
Merci par avence pour votre aide précieuse !
Partager