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

  1. #1
    Membre régulier
    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
    Points : 84
    Points
    84
    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 averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    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
        }
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    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();
    }
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  4. #4
    Membre régulier
    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
    Points : 84
    Points
    84
    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 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968

  6. #6
    Membre régulier
    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
    Points : 84
    Points
    84
    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

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    tu peux ptêtre trouver quelques infos par ci par là dans le forum, ou la gestion du port parallèle avait déjà été évoquée.

    Controler port parallele

    winIO

    N'hésite pas à faire revivre le topic si tu as du nouveau.
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  8. #8
    Membre régulier
    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
    Points : 84
    Points
    84
    Par défaut
    Pour le port // j'ai trouvé une DLL qui fait trés bien le boulot : inpout32.dll fonctionne aussi bien sur 98 que sur xp, sur vista je sais pas

  9. #9
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Personnellement, dans un cadre de fonctionnement similaire, j'ai utilisé Cygwin pour faire de la communication sur port série : nickel sous Windows toutes versions et surtout compatible Unix.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  10. #10
    Membre régulier
    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
    Points : 84
    Points
    84
    Par défaut
    Re bonjour à tous je reviens vous embêté un peu ^^

    Ca fait quelque jour que je fais mumuse avec Qt et je reconnais volontier que c'est vraiment sympa .

    J'ai malheureusement un souci, toujours dans l'idée de me faire les mains avec Qt j'ai voulu créer un "programme" composé de deux LCD et 4 boutons .

    Les boutons permettes d'agrandir ou de rétrécir la fenêtre en hauteur et largeur.

    Les Lcds quand à eux se charge d'afficher les valeur de la hauteur et de la l largeur.

    J'ai quasiment fini, le redimensionnement fonctionne nickel chrome mais j'aimerai qu'a chaque fois que la taille de la fenêtre change on appelle une fonction qui met à jours les LCDs.

    J'ai consulté la doc de Qt j'ai lu quelque chose sur les events et particuliérement QResizeEvent.

    Malheuresement je ne comprend pas comment utilisé cet event en plus on parte de virtual protected machin chose bref je suis largué .

    Pourriez vous m'éxpliquer comment intégré ca à mon projet.

    Le lien de la doc pour l'event -> http://qt.developpez.com/doc/4.3/qresizeevent/

    Merci d'avance

    Edit : Aprés un steak frite dans le corp je m'y suis remis et j'ai réussi j'ai pas encore vraiment compris comment mais ca marche

    Je vais donc donné la solution au cas où quelqu'un en aurait besoin .

    Tout d'abord il est nécessaire d'inclure QresizeEvent dans votre Fichier d'en tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <QResizeEvent>
    Ensuite dans votre classe ajoutez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected:
     
        void    resizeEvent( QResizeEvent * );
    Et pour finir dans le fichier CPP ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void MaFenetre::resizeEvent( QResizeEvent * )
        {
        Le code à exécuter si la taille du widget change  
        }
    Vous pouvez utilisez ca comme un slot avec la méthode Qconnect.

    J'ai une autre question, le "MaFenettre::" correspond au nom de ma classe c'est ca ?

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Malheuresement je ne comprend pas comment utilisé cet event en plus on parte de virtual protected machin chose bref je suis largué .
    Salut, alors, en fait, dans virtual protected tu as deux mots clés : virtual et protected.

    Pour le mot clé private, voilà une description de ce à quoi il sert :

    mots clés public, private et protected

    Voilà une description du mot clé virtual :

    définition du mot clé virtual

    Maintenant, en plus concret :

    ta classe s'appelle MaFenêtre.
    Dans sa déclaration, tu as mis :

    class MaFenetre : public QWidget
    Ce qui peut dire qu'elle va hériter de certaines propriétés/méthodes de la classe QWidget. Desquelles ? Hé bien, des propriétés publiques (qu'on pourrait appeler depuis l'extérieur) et de celles qui sont protected.
    Dans ton cas, la méthode resizeEvent(QResizeEvent *) était en virtual protected. ça veut dire, que celui qui a écrit cette méthode à l'origine dans QWidget, il fait peut-être (sûrement quelque chose) avec. Le gars il s'est dit, qu'une personne (par exemple toi) lorsqu'il va créer une classe dérivée de QWidget, il va peut-être vouloir faire quelque chose d'autre lorsqu'on fait un resize. Pour cela, il a ajouté le mot clé virtual. Donc, non seulement tu hérite de cette méthode, mais en plus, tu peux la redéfinir.

    Là, il y a aussi une précision à ajouter. Il se peut que tu veuilles non seulement modifier la méthode, mais aussi garder le comportement d'origine.
    Il faut trouver trouver une manière de rappeler la méthode dans sa version d'origine. Pas de problèmes, il te suffit de rappeler cette méthode en utilisant l'opérateur de résolution de portée ( :: ) et donner l'argument que tu avais reçu (event). cela donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void MaFenetre::resizeEvent(QResizeEvent * event)
    {
         // Le code à exécuter si la taille du widget change
         // ...
         // Ensuite, on rappelle la méthode hérité en lui donnant le parametre
         // reçu précédemment (event)
         QWidget::resizeEvent(event);
    }
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  12. #12
    Membre régulier
    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
    Points : 84
    Points
    84
    Par défaut
    Hébé je suis pas sortie de l'auberge :s

    Y'a pas à dire c'est relativement puissant mais la je reconnais être largué :s

    J'ai lu sur le site qu'il faut savoir faire des fenêtres a la main avant de les faire avec le Designer mais partie comme ça j'suis pas pret de toucher au Designer .

    Je comprend pas pourquoi on rapelle QWidget::resizeEvent(event); ni même ce que contient (event) :s

    C'est pas un train que j'ai de retard c'est toute une gare :/

    Edit

    Quite a paraitre con je vous resollicite à nouveau ...


    Toujours sur le même projet je n'arrive pas à utiliser le layout honrizontal :

    Quand dans le main je lui dis setlayout(m_monlayout) le compilateur me sort que m_monlayout est inconnu.

    Existe t il un moyen de paramétrer le layout dans mon fenetre.cpp et de l'utiliser dans le main ?

    Merci encore ...

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Moi j'ai commencé par Designer, même si ce n'était pas le bon choix. Dès que t'as compris le principe de l'héritage c'est bon. Dans tous les cas, faut regarder le code que génère Qt Designer, ça en apprend pas mal.

    Je comprend pas pourquoi on rapelle QWidget::resizeEvent(event); ni même ce que contient (event) :s
    dans ce cas là, on s'en balance pas mal de ce que contient event.
    Lorsque tu as hérité de QWidget et réimplémenté resizeEvent(...), le compilateur/linker sait que cette méthode existe "en double", celle de base (de Qwidget) et la tienne. lorsque toi tu tiens à appeler celle de base ... elle porte le même nom que la tienne, dans ce cas, si tu écris resizeEvent(...) le linker appelle la tienne, si tu veux appeler celle "par défaut" il faut utiliser QWidget::resizeEvent.

    Un exemple auquel j'ai été confronté (merci Mongaulois pour l'aide) :

    QListWidget::paintEvent(event)

    Dans l'exemple ci dessus, je voulais modifier non pas le comportement lors d'un resize, mais lors du dessin du widget en question.
    J'avais une liste (QListWidget) et je voulais changer le contour des items.
    J'ai dû donc créer une liste dérivant de QListWidget et modifier sa méthode de dessin paintEvent. j'ai rajouté des lignes et des rectangles à dessiner, puis j'ai dis à l'objet de continuer à se dessiner normalement, comme si j'étais pas là, donc j'ai rappelé la méthode de la classe de base.


    Quite a paraitre con je vous resollicite à nouveau ...
    On est tous passés par là, et des fois on y est encore

    Quand dans le main je lui dis setlayout(m_monlayout) le compilateur me sort que m_monlayout est inconnu.
    T'as crée un layout ?

    Existe t il un moyen de paramétrer le layout dans mon fenetre.cpp et de l'utiliser dans le main ?
    tu peux créer un membre de ta classe MaFenetre qui est un QLayout et faire ton QLayout ensuite :

    http://qt.developpez.com/doc/4.4/qwidget/#setlayout

    Note : ces questions n'ayant plus un grand intérêt dans ce thread, tu devrais créer des threads séparés (après avoir bien cherché sur le forum et si tu ne trouves pas de réponse).
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  14. #14
    Membre régulier
    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
    Points : 84
    Points
    84
    Par défaut
    Si je commence a créer un topic pour chacune de mes questions j'vais vous saturer la BDD ^^

    M'enfin si vous préférez comme ca je m'y plierai

    Pour ce qui est de la création de mon layout oui il est crée enfin je crois .

    Voici mon code, a mon avis j'ai pas encore placé les bons truc au bon endroit :/

    QTH.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
    #ifndef QTH_H_INCLUDED
    #define QTH_H_INCLUDED
     
    #include <QApplication>
    #include <QPushButton>
    #include <QWidget>
    #include <QMessageBox>
    #include <QLCDNumber>
    #include <QResizeEvent>
    #include <QHboxLayout>
    class MaFenetre : public QWidget
    {
         Q_OBJECT
     
        public :
        MaFenetre();
     
        public slots:
     
        void LargeurP1();
        void LargeurM1();
        void LongeurP1();
        void LongeurM1();
     
        protected:
     
        void resizeEvent( QResizeEvent * );
     
        private :
        QPushButton *m_boutonLaP;
        QPushButton *m_boutonLaM;
        QPushButton *m_boutonLoP;
        QPushButton *m_boutonLoM;
        QLCDNumber *m_lcdla;
        QLCDNumber *m_lcdlo;
        QHBoxLayout *m_monlayout;
    };
     
     
    #endif // QTH_H_INCLUDED
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    MaFenetre.cpp
     
    #include "QTH.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
        resize(200,200);
        // Construction des boutons
        m_boutonLaP = new QPushButton("Largeur +",this);
        connect(m_boutonLaP, SIGNAL(clicked()), this, SLOT(LargeurP1()));
     
        m_boutonLaM = new QPushButton("Largeur -",this);
        connect(m_boutonLaM, SIGNAL(clicked()), this, SLOT(LargeurM1()));
     
        m_boutonLoP = new QPushButton("Longeur +",this);
        connect(m_boutonLoP, SIGNAL(clicked()), this, SLOT(LongeurP1()));
     
        m_boutonLoM = new QPushButton("Longeur -",this);
        connect(m_boutonLoM, SIGNAL(clicked()), this, SLOT(LongeurM1()));
     
        m_lcdla = new QLCDNumber(4,this);
        m_lcdla-> setSegmentStyle(QLCDNumber::Flat);
        m_lcdla-> display(width());
     
        m_lcdlo = new QLCDNumber(4,this);
        m_lcdlo-> setSegmentStyle(QLCDNumber::Flat);
        m_lcdlo-> display(height());
     
        QObject::connect(this, SIGNAL(QResizeEvent::QResizeEvent()), this, SLOT(MajLCD()));
     
        m_monlayout = new QHBoxLayout;
        m_monlayout->addWidget(MaFenetre::m_boutonLaP);
        m_monlayout->addWidget(MaFenetre::m_boutonLaM);
        m_monlayout->addWidget(MaFenetre::m_boutonLoP);
        m_monlayout->addWidget(MaFenetre::m_boutonLoM);
        m_monlayout->addWidget(MaFenetre::m_lcdla);
        m_monlayout->addWidget(MaFenetre::m_lcdlo);
    }
     
        void MaFenetre::LargeurP1()
        {
        int largeur = width();
        int longeur = height();
        resize(largeur+1,longeur);
        }
        void MaFenetre::LargeurM1()
        {
        int largeur = width();
        int longeur = height();
        resize(largeur-1,longeur);
        }
        void MaFenetre::LongeurP1()
        {
        int largeur = width();
        int longeur = height();
        resize(largeur,longeur+1);
        }
        void MaFenetre::LongeurM1()
        {
        int largeur = width();
        int longeur = height();
        resize(largeur,longeur-1);
        }
     
        void MaFenetre::resizeEvent( QResizeEvent * )
        {
        m_lcdla->display(width());
        m_lcdlo->display(height());
        }
    Et le main on ne peut plus basique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "QTH.h"
    #include <QApplication>
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        MaFenetre fenetre;
        fenetre.setLayout(MaFenetre::m_monlayout);
        fenetre.show();
        return app.exec();
    }

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    Salut,

    met setLayout(MaFenetre::m_monlayout); dans le constructeur.

    Là tu l'avais mis dans le main or m_monlayout est en private et donc inaccessible ailleurs que dans ta class

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par geek-59600 Voir le message
    Si je commence a créer un topic pour chacune de mes questions j'vais vous saturer la BDD ^^

    M'enfin si vous préférez comme ca je m'y plierai
    Il faut savoir que les questions que tu te pose, d'autre les aurons surement. Donc y as des chances que tes thread servent à quelqu'un plus tard
    Si toutes les questions sont mélanger, ton thread n'est plus utile pour les autres

  17. #17
    Membre régulier
    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
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par Niamor59 Voir le message
    Salut,

    met setLayout(MaFenetre::m_monlayout); dans le constructeur.

    Là tu l'avais mis dans le main or m_monlayout est en private et donc inaccessible ailleurs que dans ta class
    Merci !
    Je savais que j'étais pas loin mais j'ignorais que je pouvais spécifier le layout a cet endroit.

    Tout ce qui est paramétrage de la fenêtre se fait dans le header pour les déclarations et dans le fenetre.cpp pour les définitions.
    Le main sert juste à créer la fenêtre et a l'afficher donc ?

    Peut être allez vous trouvez ma requête débile mais pourriez vous me suggérer un exercice qui me permettrait de voir si j'ai bien tout compris ?

    Merci encore !

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    Tout à fait.

    merci à l'aide donnée sur le forum Qt, en particulier merci pour les tutoriels QT et la FAQ Qt !

+ 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