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 :

Souci avec QMessageBox

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut Souci avec QMessageBox
    Bonsoir à tous,

    Je suis entrain de me faire les mains avec Qt que je trouve fort sympatique.

    Mon projet est tout bête voir même on ne peut plus bête 1 fenetre 2 bouton

    Un bouton qui affiche une valeur grace à une MessageBox et l'autre bouton qui incrémente la valeur de 1.

    Ca ne sert strictement à rien je l'admet mais j'ai passé la journée dessus et ce n'est pas une image.

    Je suis totalement H.S je me permets donc de vous soumettre mon code afin que vous m'éclairiez .

    Projet en 3 fichier ( 2 .CPP + 1 .H )

    Fenetre.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
    #ifndef FENETRE_H_INCLUDED
    #define FENETRE_H_INCLUDED
    #include <QtGui>
     
    class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
        public slots:
        void ouvrirDialogue();
        void increm();
     
        private:
        QPushButton *bouton1;
        QPushButton *bouton2;
        QMessageBox *Mbox1;
     
    };
    #endif // FENETRE_H_INCLUDED
    Fenetre.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
     
    #include "Fenetre.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
         setFixedSize (640, 480);
         QFont MaPolice ("Arial Black",15);
     
        //construction du premier bouton
     
        bouton1 = new QPushButton("Afficher la Valeur", this);
        bouton1->setFont(MaPolice);
        bouton1->move(120,240);
        QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
     
        //contruction du deuxieme bouton
     
        bouton2 = new QPushButton("Incrementer la valeur", this);
        bouton2->setFont(MaPolice);
        bouton2->move(360,240);
        Object::connect(bouton2, SIGNAL(clicked()), this, SLOT(increm()));
     
        //Construction de la boite de message
     
        Mbox1 = new QMessageBox (this,"Titre","Message");
    }
        void MaFenetre::ouvrirDialogue()
        {
        Mbox1;
        }
        void MaFenetre::increm()
        {
        a++;
        Mbox1->setText (a);
        }
    Main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <QApplication>
    #include "Fenetre.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        int a = 25;
        MaFenetre win;
        win.show();
        return app.exec();
    }

    Je sais qu'il y a une erreur, ce qui me gene le plus c'est de réussir à appeller ma Messagebox des qu'il y a un clic sur le bouton1.

    Je vous remercie d'avance et je m'excuse encore de vous solliciter pour un truc aussi basique mais mes neurones refuse de m'obéir à une heure aussi tardive

    Bonne soirée .

  2. #2
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Salut, ta maniere de faire est assez speciale en fait ...
    Ou est-ce que tu demande a ton dialogie de s'afficher ?

    Tiens, jette un coup d'oeil sur la doc qui devrait t'interesser :

    documentation de QMessageBox::exec()

    ta methode ouvrirDialogue n'est pas bonne. En general, si je ne me trompe pas, on evite de rendre des boites de dialogues du genre QMessageBox membres de la classe, on les construit directement.

    dans la declaration de ta classe je l'enleverai :

    Surtout ... je mettrai la variable a en membre de ta classe fenetre (oublie pas de l'initialiser), telle que tu l'as declaree, elle est dans main() uniquement.

    du coup, on enleve l'instanciation dans le constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Mbox1 = new QMessageBox (this,"Titre","Message");
    enfin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        void MaFenetre::ouvrirDialogue()
        {
         QMessageBox msgBox;
         msgBox.setText("Valeur de a " + QString::number(a));
         msgBox.exec();
        }
        void MaFenetre::increm()
        {
        a++;     // incremente mais n'affichera pas la boite
        }

  3. #3
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Fenetre.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
    #ifndef FENETRE_H_INCLUDED
    #define FENETRE_H_INCLUDED
    #include <QtGui>
     
    class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
        public slots:
        void ouvrirDialogue();
        void increm();
        
        private:
        QPushButton *bouton1;
        QPushButton *bouton2;
        // QMessageBox *Mbox1;     // pas de ca la
     
    };
    #endif // FENETRE_H_INCLUDED

    Fenetre.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
    #include "Fenetre.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
         // initialiser a
         m_a = 25;
     
         setFixedSize (640, 480);
         QFont MaPolice ("Arial Black",15);
     
        //construction du premier bouton
     
        bouton1 = new QPushButton("Afficher la Valeur", this);
        bouton1->setFont(MaPolice);
        bouton1->move(120,240);
        QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
     
        //contruction du deuxieme bouton
     
        bouton2 = new QPushButton("Incrementer la valeur", this);
        bouton2->setFont(MaPolice);
        bouton2->move(360,240);
        Object::connect(bouton2, SIGNAL(clicked()), this, SLOT(increm()));
     
        //Mbox1 = new QMessageBox (this,"Titre","Message");    // pas ici
    }
    void MaFenetre::ouvrirDialogue()
    {
         // afficher une boite de dialogue avec la valeur de a
         QMessageBox msgBox;
         msgBox.setText("Valeur de a " + QString::number(m_a));
         msgBox.exec();
    }
    void MaFenetre::increm()
    {
         m_a++;     // incrementer "a"
    }

    Main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <QApplication>
    #include "Fenetre.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        // int a = 25; // pas ici
        MaFenetre win;
        win.show();
        return app.exec();
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut
    Merci a vous deux.

    Je testerai ca se soir mais il est clair que c'est plus logique que ma facon de procéder .

    Pour la déclaration de a dans main() a vrai je ne savais pas du tout où le déclarer donc j'ai voulu lui donner ( a mon sens ) une porté maximale .

    Et pour ce qui est de la déclaration du messagebox je pensais que je pouvais faire comme avec les boutons, j'avais essayé mbox1->exec(); mais ca ne fonctionnais pas.

    En tout cas merci encore et à la prochaine fois car je sens que j'aurai encore besoin de votre aide .

    Bonne journée.

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut
    Merci voila quelque chose qui va m'être fort utile

    A terme j'aimerai faire un projet pour mon pére :

    "Piloter" une interface parallèle pour faire de la robotique.

    Le programme sera composé de 20 étapes chaque étapes aura 8 checkbox , un champ pour rentrer un entier qui servira a fixer un délai avant de passer a la prochaine étape et une liste de 3 action a faire : aller à l'étape suivante, retourner au début, stop .

    Ca va être mon premier "gros" projet et d'autan plus qu'il servira a mon père donc faut que ça soit nickel chrome .

    Merci encore à vous et à bientôt pour une prochaine question

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

Discussions similaires

  1. Souci avec QMessageBox
    Par spiranenc dans le forum Débuter
    Réponses: 5
    Dernier message: 03/09/2011, 21h31
  2. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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