Bonjour à tous,
Je débute dans la programmation avec Qt (juste avec Qt, sinon, je me débrouille depuis 30 ans en basic, en php, en C (pour Arduino), en C++ (console), en scripts shell -- Mais j'avoue que je découvre la POO et que c'est une nouvelle façon de penser). J'ai fait des recherches, mais n'arrive pas à comprendre d'où vient mon erreur.
Un petit programme contenant 5 pages :
main.cpp
FenPrincipale.cpp
FenPrincipale.h
About.cpp
About.h
Mon problème vient de la connexion entre FenPrincipale et About. Quand je clique sur bouton1, je cherche à ouvrir la fenêtre About. La compilation et l'exécution se passe sans message d'erreur, mais rien ne s'affiche.
Voici le FenPrincipale.cpp
Voici le FenPrincipal.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 #include "FenPrincipale.h" #include "About.h" FenPrincipale::FenPrincipale() { //le menu QMenu *menuFichier = menuBar()->addMenu(tr("&Fichier")); QAction *actionQuitter = new QAction(tr("&Quitter")); menuFichier->addAction(actionQuitter); actionQuitter->setShortcut(QKeySequence(tr("Ctrl+Q"))); QMenu *menuCatalogues = menuBar()->addMenu(tr("&Catalogues")); QMenu *menuCollection = menuBar()->addMenu(tr("&Collection")); QMenu *menuAide = menuBar()->addMenu(tr("&?")); QAction *actionAbout = new QAction(tr("À &propos de..."),this); menuAide->addAction(actionAbout); //la fenêtre principale QWidget *zoneCentrale = new QWidget; QVBoxLayout *vlay = new QVBoxLayout(zoneCentrale); QPushButton *bouton1 = new QPushButton("Bouton 1"); vlay->addWidget(bouton1); QPushButton *bouton2 = new QPushButton("Bouton 2"); vlay->addWidget(bouton2); QPushButton *bouton3 = new QPushButton("Bouton 3"); vlay->addWidget(bouton3); zoneCentrale->setLayout(vlay); setCentralWidget(zoneCentrale); //les connect du menu connect(actionQuitter,SIGNAL(triggered()),qApp, SLOT(quit())); connect(bouton1,SIGNAL(clicked()),this, SLOT(ouvrirAbout())); } void FenPrincipale::ouvrirAbout() { about= new About(this); about->show(); }
le About.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 #ifndef FENPRINCIPALE_H #define FENPRINCIPALE_H #include <QMainWindow> #include <QObject> #include <QtWidgets> #include "About.h" class FenPrincipale : public QMainWindow { Q_OBJECT public: FenPrincipale(); public slots: void ouvrirAbout(); private: QPushButton *bouton1; QPushButton *bouton2; QPushButton *bouton3; QAction *actionQuitter; QAction *actionAbout; About *about; }; #endif // FENPRINCIPALE_H
Et le About.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 #ifndef ABOUT_H #define ABOUT_H #include <QWidget> #include <QtWidgets> class About : public QWidget { Q_OBJECT public: explicit About(QWidget *parent = nullptr); private : About *about; }; #endif // ABOUT_H
Là, j'avoue que je suis un peu paumé... Pas de message d'erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "About.h" About::About(QWidget *parent) : QWidget(parent) { QWidget about; about.setFixedSize(300,150); about.show(); }
Vous voyez ce qui cloche ? (probablement pas mal de choses...)
Merci d'avance pour votre aide.
Partager