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 :

Envoyer des informations entre un QLineEdit et un QLabel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Envoyer des informations entre un QLineEdit et un QLabel
    Bonjour,

    Je suis nouveau dans le développement Qt.
    J'essaye suite à une entrée dans le QLine de remplir un label dans la fenêtre principale, ça fonctionne, mais aussi de remplir un label dans une fenêtre secondaire (fenetreLabel), marche pas .... un peu d'aide serait bienvenue

    fenetre principale
    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
     
    #ifndef AFFICHEQLINE_H
    #define AFFICHEQLINE_H
    #include <QtGui>
     
    class afficheQline:public QWidget
    {
        Q_OBJECT
     
    public:
        afficheQline();
        QString getTexteFenetreLabel();
        int getTest();
     
    public slots:
        void recuperationQline();
     
    private:
        QLineEdit *texteAafficher;
        QString texte;
        QLabel *monLabel;
        int test;
    };
     
    #endif // AFFICHEQLINE_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
     
    #include "afficheqline.h"
     
    afficheQline::afficheQline() : QWidget()
    {
        test=0;
        setFixedSize(300,200);
        monLabel=new QLabel("testTransfertQline",this);
        monLabel->setGeometry(30,100,200,150);
     
        texteAafficher=new QLineEdit("",this);
        texteAafficher->move(30,50);
     
        QObject::connect(texteAafficher,SIGNAL(returnPressed()),this,SLOT(recuperationQline()));
       // test=1;
    }
     
    void afficheQline::recuperationQline()
    {
        QString texte=texteAafficher->text();
     
        monLabel->setText(texte);
        test=1;
     
    }
     
    QString afficheQline::getTexteFenetreLabel()
    {
        return texte;
    }
     
    int afficheQline::getTest()
    {
        return test;
    }

    fenetre secondaire
    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 FENETRELABEL_H
    #define FENETRELABEL_H
    #include <QtGui>
    #include "afficheqline.h"
     
     
     
    class fenetreLabel:public QWidget
    {
     
    public:
        fenetreLabel();
     
    private:
        QLabel *monLabel2;
        afficheQline m_affiche;
     
    };
     
     
    #endif // FENETRELABEL_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
     
    #include "fenetreLabel.h"
     
     
    fenetreLabel::fenetreLabel() : QWidget()
    {
        setFixedSize(300,200);
        move(650,210);
        monLabel2=new QLabel("testTransfertQline",this);
        monLabel2->setGeometry(30,100,200,150);
        if (m_affiche.getTest()==1)
        {
        monLabel2->setText(m_affiche.getTexteFenetreLabel());
        }
     
    }
    Merci

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

    Le problème ne viendrait pas que tu déclares ta variable texte en local ?
    Dans ton code j'ai vu ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void afficheQline::recuperationQline()
    {
        QString texte=texteAafficher->text(); 
        monLabel->setText(texte);
        test=1; 
    }
     
    QString afficheQline::getTexteFenetreLabel()
    {
        return texte;
    }
    Dans ta fonction recuperationQline() tu déclares un variable QString texte qui meurt à la fin de "l'exécution" de la fonction.
    Si tu déclares ta QString texte; en variable "globale" ça change quelque chose ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    J'essaye d'accéder au texte entré dans le QLineEdit via un accesseur et de l'envoyer dans le QLabel de la fenêtre secondaire, mais il ne m'affiche rien...
    Je ne comprends pas.
    Je fais passer une variable test de 0 à 1 pour savoir si on est dans le slot (returnPressed()), afin de récupérer ce texte.
    Je ne vois pas ou est mon erreur...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Mais dans ta fonction recuperationQline() il ne te suffirait pas de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void afficheQline::recuperationQline()
    {
        texte=texteAafficher->text(); 
        monLabel->setText(texte);
        test=1; 
    }
    ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Je te remercie de ta réponse.
    Comment je fais pour créer une variable globale ??
    Car si texte "meurt" à la fin de la fonction, mon problème est bien là.
    J'ai cru comprendre qu'il faut utiliser des variables statiques.
    J'ai quand même une question:tu dis que texte "meurt" à la fin de la méthode.
    Je croyais que ce n'était qu'a la fin de la fonction main ???

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait je voulais dire une variable membre d'une classe pardon.
    Il y a peut-être qqch qui m'a échappé (sûrement d'ailleurs), mais dans ta classe tu déclares une variable en private QString texte comme ceci (ici je n'ai mis que les lignes qui m'intéressent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class afficheQline:public QWidget
    {
        Q_OBJECT
     
    private:    
        QString texte;    
    };
    J'ai peut-être raté une étape, mais plus loin dans ta fonction tu re-déclares une variable de même nom comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void afficheQline::recuperationQline()
    {
        QString texte=texteAafficher->text(); 
        monLabel->setText(texte);
        test=1; 
    }
    En fait tant que la variable texte de ta fonction "vit" alors ça affiche bien le texte de la variable monLabel : pour ça pas de souci.
    Le souci vient à mon avis du fait que quand tu appelles la fonction getTexteFenetreLabel() il te retourne la variable texte que tu as déclaré dans ta classe afficheQline mais qui ne contient aucun texte si tu n'as pas mis de texte "dedans" auparavant.
    Mais je peux me tromper.

    Dis-moi si tu ne saisis pas je m'explique des fois très mal.
    Dernière modification par Invité ; 02/08/2011 à 15h07.

  7. #7
    Invité
    Invité(e)
    Par défaut
    En fait ici cela ne sert à rien de redéclarer une QString texte dans ta fonction car la variable texte est automatiquement créee lorsque tu crées un objet de type afficheQline, puisque tu l'as spécifié dans la déclaration de ta classe.
    Donc ici pas besoin de remettre le QString devant la variable : elle existe déjà donc c'est bon.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Je te remercie, il est vrai que je redéclarais le variable texte, j'ai donc enlevé QString dans la méthode, mais malheureusement ça ne fonctionne tjs pas.

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    J'ai essayé de créer la variable test en static pour qu'elle soit globale, mais rien à faire.
    En fait c'est la variable test dans le slot qui n'est pas prise en compte, elle ne passe jamais à 1, ce qui ne peut pas valider mon if (.....)
    J'ai essayé de créer mon slot de type int pour qu'il renvoi test, mais ça ne fonctionne pas non plus...
    AU Secours...

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé, et bien galéré....

    fenetre principale:
    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
     
    #ifndef AFFICHEQLINE_H
    #define AFFICHEQLINE_H
    #include <QtGui>
     
    class afficheQline:public QWidget
    {
        Q_OBJECT
     
    public:
        afficheQline();
     
    public slots:
        void recuperationQline();
     
    private:
        QLineEdit *texteAafficher;
        QString texte;
        QLabel *monLabel;
     
    };
     
    #endif // AFFICHEQLINE_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
     
    #include "afficheqline.h"
    #include "fenetreLabel.h"
     
    afficheQline::afficheQline() : QWidget()
    {
        setFixedSize(300,200);
        monLabel=new QLabel("testTransfertQline",this);
        monLabel->setGeometry(30,100,200,150);
     
        texteAafficher=new QLineEdit("",this);
        texteAafficher->move(30,50);
     
        QObject::connect(texteAafficher,SIGNAL(returnPressed()),this,SLOT(recuperationQline()));
       // test=1;
    }
     
    void afficheQline::recuperationQline()
    {
        texte=texteAafficher->text();
        monLabel->setText(texte);
        fenetreLabel *maFenetre=new fenetreLabel(texte,this);
        maFenetre->show();
    }
    Fenetre secondaire:

    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 FENETRELABEL_H
    #define FENETRELABEL_H
    #include <QtGui>
     
     
     
    class fenetreLabel:public QWidget
    {
     
    public:
        fenetreLabel(QString texte,QWidget *parent);
     
    private:
        QLabel *monLabel2;
    };
     
     
    #endif // FENETRELABEL_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
     
    #include "fenetreLabel.h"
     
     
    fenetreLabel::fenetreLabel(QString texte, QWidget *parent) : QWidget()
    {
        setFixedSize(300,200);
        move(650,210);
        monLabel2=new QLabel("testTransfertQline",this);
        monLabel2->setGeometry(30,100,200,150);
     
     
        monLabel2->setText(texte);
     
     
    }

  11. #11
    Invité
    Invité(e)
    Par défaut
    Content pour toi que tu aies trouvé. Je te souhaite une bonne continuation dans ton projet.
    Cordialement, Gizmo.

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

Discussions similaires

  1. [Theorie] Passage des informations entre les redolog et les tbs undo
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 10
    Dernier message: 07/06/2007, 09h11
  2. [PHP-JS] envoyer des informations à deux pages
    Par insane_80 dans le forum Langage
    Réponses: 2
    Dernier message: 04/10/2006, 14h50
  3. Envoyer des informations à un service Web en javascript
    Par gingman dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/03/2006, 10h46
  4. Réponses: 3
    Dernier message: 28/10/2005, 10h01
  5. [C#] Transférer des informations entre 2 formulaires
    Par monoeilouais dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/07/2004, 17h21

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