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 une valeur d'une fenêtre secondaire à une fenêtre principale

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Mars 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Mars 2015
    Messages : 36
    Points : 30
    Points
    30
    Par défaut Envoyer une valeur d'une fenêtre secondaire à une fenêtre principale
    Bonjour, je fais un petit programme mais je suis complétement bloqué parce que je n'arrive pas à envoyer le chiffre trouvé dans la deuxième à la première pour continuer le calcul. J'ai essayé de très nombreuses façon, mais il y a vraiment quelque chose que je ne comprend pas dans les signaux et slots. Merci de votre aide.
    Voici le programme :

    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
    #ifndef DEUXTESTFENETRE4_H
    #define DEUXTESTFENETRE4_H
     
    #include <QtGui>
    #include <QMainWindow>
    #include <QObject>
    #include <QWidget>
    #include <QtWidgets>
    #include <QApplication>
    #include <QString>
     
    namespace Ui {
    class deuxTestFenetre4;
    }
     
    class deuxTestFenetre4 : public QWidget
    {
        Q_OBJECT
     
    public:
        explicit deuxTestFenetre4(QWidget *parent = 0);
     
        int somme;
     
        ~deuxTestFenetre4();
     
    public slots:
        void boutonValider();
     
     
    signals:
        void envoyerChiffre(int somme);
     
     
    private:
        Ui::deuxTestFenetre4 *ui;
    };
     
    #endif // DEUXTESTFENETRE4_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
    #include "deuxtestfenetre4.h"
    #include "ui_deuxtestfenetre4.h"
     
    #include "testfenetre4.h"
    #include "ui_testfenetre4.h"
     
    #include <QtGui>
    #include <QMainWindow>
    #include <QObject>
    #include <QWidget>
    #include <QtWidgets>
    #include <QApplication>
    #include <QString>
     
    deuxTestFenetre4::deuxTestFenetre4(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::deuxTestFenetre4)
    {
        ui->setupUi(this);
     
        QObject::connect(ui->boutonQuitter2, SIGNAL(clicked()), this, SLOT(deleteLater()));
        QObject::connect(ui->boutonQuitter2, &QPushButton::pressed, [=](){ui->boutonQuitter2->setText("A BIENTOT");});
     
        QObject::connect(ui->calcul, SIGNAL(clicked()), this, SLOT(boutonValider()));
     
    }
     
    void deuxTestFenetre4::boutonValider()
    {
     
     
        int somme = ui->compteur1->value() + ui->compteur2->value() + ui->compteur3->value();
        ui->lcd2->display(somme);
        emit envoyerChiffre(somme);
     
    }
     
    deuxTestFenetre4::~deuxTestFenetre4()
    {
        delete ui;
    }
    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
    #ifndef TESTFENETRE4_H
    #define TESTFENETRE4_H
     
    #include <QtGui>
    #include <QMainWindow>
    #include <QObject>
    #include <QWidget>
    #include <QtWidgets>
    #include <QApplication>
    #include <QString>
     
    namespace Ui {
    class testFenetre4;
    }
     
    class testFenetre4 : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit testFenetre4(QWidget *parent = 0);
        ~testFenetre4();
     
    public slots:
        void ouvrirFormulaire();
        void ecrire(int);
     
     
     
    signals:
        void envoyerChiffre(int);
     
     
     
     
    private:
        Ui::testFenetre4 *ui;
     
     
    };
     
    #endif // TESTFENETRE4_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
    #include "testfenetre4.h"
    #include "ui_testfenetre4.h"
     
    #include "deuxtestfenetre4.h"
    #include "ui_deuxtestfenetre4.h"
     
    #include <QMainWindow>
    #include <QObject>
    #include <QWidget>
    #include <QtWidgets>
    #include <QApplication>
    #include <QtGui>
    #include <QString>
     
    testFenetre4::testFenetre4(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::testFenetre4)
    {
        ui->setupUi(this);
     
        QObject::connect(ui->m_boutonQuitter, &QPushButton::clicked, &QApplication::quit);
        QObject::connect(ui->m_boutonQuitter, &QPushButton::pressed, [=](){ui->m_boutonQuitter->setText("AU REVOIR");});
     
        QObject::connect(ui->m_boutonFormulaire, SIGNAL(clicked()), this, SLOT(ouvrirFormulaire()));
     
        deuxTestFenetre4 *fen2 = new deuxTestFenetre4();
        QObject::connect(fen2, SIGNAL(envoyerChiffre(int)), this, SLOT(ecrire(int)));
     
    }
     
    void testFenetre4::ecrire(int)
    {
        ui->m_lcd->intValue();
     
     
    }
     
     
    void testFenetre4::ouvrirFormulaire()
    {
        deuxTestFenetre4 *f = new deuxTestFenetre4();
        f->show();
    }

  2. #2
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    Conseil au passage : Souvent on ne supprime pas les fenêtres tant qu'on a pas quitté l'application. La solution consiste à juste les cacher ou afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void testFenetre4::ecrire(int)
    {
        ui->m_lcd->intValue();
    }
    => Ici tu es sensé recevoir ton résultat. Je dis sensé parce que je suis au boulot sur une version 4.x de Qt et que je ne pourrais pas tester ton code Et tu l'ignore !

    J'imagine que tu voulais l'afficher, par exemple avec un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void testFenetre4::ecrire(int result)
    {
        ui->m_lcd->setText(QString::number(result));
    }
    Un autre conseil : nomme correctement tes widgets. Le nom de tes fenêtres ne veut rien dire ici, c'est déroutant pour ceux qui te lisent, et ce sera déroutant pour toi quand tu reviendras lire ce code. Un code lisible c'est le début de la gloire !

    Et un dernier conseil si ma solution ne marche pas : Regarde ce que Qt te crache dans la console. Si les signaux/slots sont mal connectés, il devrait te le rappeler.

    Bon courage !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Mars 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Mars 2015
    Messages : 36
    Points : 30
    Points
    30
    Par défaut
    Mille merci, ça fonctionne. Je suis débutant et j'apprécie tous les conseils (je vais renommer les widgets).

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 05/02/2015, 11h26
  2. Réponses: 6
    Dernier message: 25/06/2014, 01h36
  3. [WD16] comment mettre une valeur d'un combo dans une autre fenêtre
    Par T1929D dans le forum WinDev
    Réponses: 1
    Dernier message: 06/08/2013, 17h01
  4. [XL-2000] Remplir une valeur dans cellule à partir d'une valeur precise d'un fichier texte
    Par cactus666 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/01/2010, 10h31
  5. Réponses: 6
    Dernier message: 19/05/2005, 14h52

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