IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Connecter une fenêtre

  1. #1
    Invité
    Invité(e)
    Par défaut Connecter une fenêtre
    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
    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();
    }
    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
     
    #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
    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
     
    #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
    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
     
    #include "About.h"
     
    About::About(QWidget *parent) : QWidget(parent)
    {
        QWidget about;
        about.setFixedSize(300,150);
     
        about.show();
     
    }
    Là, j'avoue que je suis un peu paumé... Pas de message d'erreur...
    Vous voyez ce qui cloche ? (probablement pas mal de choses...)

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous

    J'ai finalement résolu mon problème.

    Dans le About.cpp

    j'ai modifié la classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    About::About(QWidget *parent) : QDialog(parent)
    De même dans le About.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class About : public QDialog
    Dans le MainWindow.cpp
    J'ai modifié ma fonction ouvrirAbout() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void MainWindow::ouvrirAbout()
    {
        About about;
        about.setModal(true);
        about.exec();
    }
    Et j'ai ainsi pu connecter cette fenêtre à mon menu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(actionAbout,SIGNAL(triggered()),this, SLOT(ouvrirAbout()));
    Ce n'était pas si sorcier en fin de compte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Accéder à une fenêtre après s’être connecté
    Par joffrecamara dans le forum WinDev
    Réponses: 4
    Dernier message: 13/12/2013, 13h35
  2. Connecter une action sur la fermeture d'une fenêtre
    Par hannibal.76 dans le forum Débuter
    Réponses: 2
    Dernier message: 17/04/2012, 11h54
  3. Rendre le curseur invisible sur une fenêtre donnée
    Par Meuhmeuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/11/2002, 12h25
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. icône d'une fenêtre fille
    Par bastien dans le forum C++Builder
    Réponses: 6
    Dernier message: 27/05/2002, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo