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

Qt Discussion :

Problème de SLOT : QmessageBox ne s'affiche pas


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Par défaut Problème de SLOT : QmessageBox ne s'affiche pas
    Bonjour à tous,

    J'arrive pas à afficher un messageBox quand j'appuie sur le bouton "Valider".

    Pour vous aider, un screen:


    Voici mes fichiers:

    main.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
     
    #include <QApplication>
    #include <QtGui>
    #include "FenPrincipale.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        FenPrincipale fenetre;
        fenetre.show();
     
        return app.exec();
    }
    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
     
    #include "FenPrincipale.h"
    #include "ongletPromo.h"
     
    FenPrincipale::FenPrincipale()
    {
     
       // setMinimumSize(500, 350);
        setWindowIcon(QIcon("Logo.png"));
        setWindowTitle(tr("zGestionNotex"));
     
        QWidget *zonePromo = new QWidget();
        OngletPromo ongletPromo(zonePromo);
     
     
     
        creerActions();
        creerMenu();
        creerBarresOutils();
     
     
     
        setCentralWidget(zonePromo);
     
    }
    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
    48
    49
    50
    51
    52
     
    #ifndef HEADER_FENPRINCIPALE_INCLUDED
    #define HEADER_FENPRINCIPALE_INCLUDED
     
    #include <QtGui>
     
    class FenPrincipale : public QMainWindow
    {
    	public:
    		FenPrincipale();
     
    	private:
            void creerActions();
            void creerMenu();
            void creerBarresOutils();
     
     
        private slots:
     
            void nouveauPromo();
            void changerPromo();
            void imprimer();
            void editerEleves();
            void editerMatieres();
            void editerNotes();
            void afficherEleves();
            void afficherMatieres();
            void afficherModules();
            void afficherClassement();
     
     
    	private:
     
            QAction *actionNouveau;
            QAction *actionFichierBidon;
            QAction *actionImprimer;
            QAction *actionQuitter;
            QAction *actionEditerEleves;
            QAction *actionEditerMatieres;
            QAction *actionEditerNotes;
            QAction *actionEleves;
            QAction *actionMatieres;
            QAction *actionModules;
            QAction *actionClassement;
     
     
     
     
    };
     
     
    #endif
    OngletPromo.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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    #include "ongletPromo.h"
     
    OngletPromo::OngletPromo(QWidget *zonePromo)
    {
     
        promo= new QSpinBox;
        promoNombre= new QSpinBox;
        QVBoxLayout *grr= new QVBoxLayout;
     
        QFormLayout *layoutInformations= new QFormLayout;
        layoutInformations->addRow("Promo: ",promo);
        layoutInformations->addRow("Nombre d'élèves : ",promoNombre);
     
     
        promo->setMinimum(2000);
        promo->setMaximum(2050);
        promoNombre->setMinimum(1);
        promoNombre->setMaximum(250);
     
        QHBoxLayout *layoutBouton=new QHBoxLayout;
     
        QPushButton *boutonValider= new QPushButton("Valider");
        boutonValider->setIcon(QIcon("Valider.png"));
     
        layoutBouton->setAlignment(Qt::AlignRight);
     
        layoutBouton->addWidget(boutonValider);
     
     
     
     
     
     
        QGroupBox *promoInformations= new QGroupBox("Informations sur la Promo");
     
        promoInformations->setLayout(layoutInformations);
     
     
        grr->addWidget(promoInformations);
        grr->addLayout(layoutBouton);
     
        zonePromo->setLayout(grr);
     
     
        connect(boutonValider,SIGNAL(clicked()),this,SLOT(demandeConfirmation()));
     
     
    }
     
    void OngletPromo::demandeConfirmation(QWidget *zonePromo)
    {
     
     
        QMessageBox::question(zonePromo, "Demande de confirmation", "Etes-vous sûr de bien vouloir enregistrer cette Promo?", QMessageBox::Yes | QMessageBox::No);
     
     
     
     
    }
    OngletPromo.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
     
    #ifndef ONGLETPROMO_H_INCLUDED
    #define ONGLETPROMO_H_INCLUDED
     
    #include <QtGui>
     
    class OngletPromo : public QMainWindow
    {
    	public:
    		OngletPromo(QWidget *zonePromo);
     
    	private:
     
     
     
        private slots:
     
            void demandeConfirmation(QWidget *zonePromo);
     
     
     
    	private:
     
     
            QSpinBox *promo;
            QSpinBox *promoNombre;
     
     
     
     
     
    };
     
    #endif // ONGLETPROMO_H_INCLUDED
    Il n'a pas d'erreurs de compilation.

    Merci encore

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Par défaut
    Il te manque déjà un
    Q_OBJECT

    dans la définition de la classe OngletPromo.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class OngletPromo : public QMainWindow
    {
        Q_OBJECT
    ...
    même chose pour la classe FenPrincipale.h

    essaye peut-être déjà avec ca

    N.B.
    Fais attention également aux noms de fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "ongletPromo.h"
    Respectes les majuscules

  3. #3
    Membre confirmé

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Par défaut
    Je viens de rajouter les macros.

    Et je pense avoir trouvé mon erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(boutonValider,SIGNAL(clicked()),this,SLOT(demandeConfirmation()))
    Mais plutot

    connect(boutonValider,SIGNAL(clicked()),this,SLOT(demandeConfirmation(zonePromo)))
    Cependant quand je compile, j'obtiens une erreur étrange.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c:/qt/2010.03/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe:
    cannot open output file debug\Secretariat.exe: Permission denied
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\Secretariat.exe] Error 1
    Cordialement

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Par défaut
    Citation Envoyé par TWEESTY Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c:/qt/2010.03/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe:
    cannot open output file debug\Secretariat.exe: Permission denied
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\Secretariat.exe] Error 1
    Vérifie que ton application n'est pas en cours d'exécution,

    Si tu utilses Qt Creator
    Compiler -> Tout Nettoyer
    Compiler -> Tout recompiler

    Celà devrait fonctionner

  5. #5
    Membre confirmé

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Par défaut
    En effet, il était bien caché dans mes processus.

    Cependant, le messageBox ne s'affiche pas

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Par défaut
    Je viens de relire le code plus attentivement.

    Déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(boutonValider,SIGNAL(clicked()),this,SLOT(demandeConfirmation(zonePromo)))
    Ta fonction demandeConfirmation() ne recevra aucun paramètre, zonePromo sera toujours vide.


    En jettant un peu des idées sans trop réfléchir

    1- soit tu stockes dans le constructeur de OngletPromo, le parent zonePromo* spécifié.

    2- soit (mais je ne sais pas si ca peut fonctionner), utilise THIS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     QMessageBox::question(this, "Demande de confirmation", "Etes-vous sûr de bien vouloir enregistrer cette Promo?", QMessageBox::Yes | QMessageBox::No);
    Heu voilà ... j'essaye juste d'aider un petit peu, mais pas sûr de ce que je raconte

    sinon

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

Discussions similaires

  1. Problème d'AlertDialog qui ne s'affiche pas
    Par Aenur56 dans le forum Android
    Réponses: 8
    Dernier message: 23/07/2012, 10h59
  2. Problème de site qui ne s'affiche pas
    Par kami441 dans le forum Apache
    Réponses: 5
    Dernier message: 12/01/2011, 18h46
  3. [MySQL] Problème de code qui ne s'affiche pas
    Par Santcho dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/06/2010, 10h37
  4. problème de style sous firefox (n'affiche pas les styles)
    Par titiweb dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 24/01/2008, 17h26

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