Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] Passage de nom de bouton dans autre fênetre

    13 septembre 2018 à 11:50:11

    Bonjour, je souhaiterai que lorsque l'on clique sur un bouton 1 ou 2 le nom du boutton apparaisse sur la fenetre fillle.

    Voici ce que j'ai fais :

    fenfille.cpp

    #include "fenfille.h"
    #include "ui_fenfille.h"
    
    fenfille::fenfille(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::fenfille)
    {
        ui->setupUi(this);
    }
    
    fenfille::~fenfille()
    {
        delete ui;
    }
    
    void fenfille::recbouton1(QString value)
    {
            ui->lbl_bouton->setText(value);
    }
    

    fenmere.cpp

    #include "fenmere.h"
    #include "ui_fenmere.h"
    #include "fenfille.h"
    
    fenmere::fenmere(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::fenmere)
    {
        ui->setupUi(this);
    }
    
    fenmere::~fenmere()
    {
        delete ui;
    }
    
    void fenmere::on_fermer_clicked()
    {
        close();
    }
    
    void fenmere::on_bouton2_clicked()
    {
        fenfille *FF = new fenfille;
    
        connect(this, SIGNAL(bouton2(QPushButton)), FF, SLOT(recbouton2(QPushButton)));
    
        emit bouton2(ui->bouton2->isActiveWindow());
    
        FF->show();
    }
    
    void fenmere::on_bouton1_clicked()
    {
        fenfille *FF = new fenfille;
    
        connect(this, SIGNAL(bouton1(QPushButton)), FF, SLOT(recbouton1(QPushButton)));
    
        emit bouton1(ui->bouton1->isActiveWindow());
    
        FF->show();
    }
    

    fenfille.h

    #ifndef FENFILLE_H
    #define FENFILLE_H
    
    #include <QWidget>
    
    namespace Ui {
    class fenfille;
    }
    
    class fenfille : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit fenfille(QWidget *parent = 0);
        ~fenfille();
    
    private slots:
    
        void recbouton1(QString);
        void recbouton2(QString);
    
    private:
         Ui::fenfille *ui;
         int bouton1;
         int bouton2;
    };
    
    #endif // FENFILLE_H
    

    fenmere.h

    #ifndef FENMERE_H
    #define FENMERE_H
    
    #include <QMainWindow>
    
    namespace Ui {
    class fenmere;
    }
    
    class fenmere : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit fenmere(QWidget *parent = 0);
        ~fenmere();
    
    private slots:
        void on_fermer_clicked();
    
        void on_pushButton_clicked();
    
        void on_bouton2_clicked();
    
        void on_bouton1_clicked();
    
    
    signals:
        void bouton1(QString);
        void bouton2(QString);
    
    
    
    private:
        Ui::fenmere *ui;
    };
    
    #endif // FENMERE_H
    




    Merci de votre aide


    • Partager sur Facebook
    • Partager sur Twitter
      13 septembre 2018 à 16:03:11

      Salut,

      Juste une petite question au hasard : pourquoi voudrais tu faire afficher le nom du bouton???

      Le nom du bouton, il ne sert qu'à permettre au développeur de l'interface (qui utilise QtDesigner, en plus) de savoir "de quel bouton il cause" lorsqu'il essayera de le faire réagir à certains événements.

      Mais ce n'est jamais qu'un détail d'implémentation dont l'utilisateur de ton application n'a absolument aucun besoin d'avoir connaissance!!!

      Après tout, ton bouton va "par nature" réagir à certains événements, comme le fait que la souris le survole ou comme le fait que l'on a cliqué dessus.

      Et cette réaction va provoquer l'invocation d'une fonction particulière (qui sera nommée "slot" pour l'occasion) qui sera spécifique non seulement à l'événement subit par le bouton, mais aussi au bouton qui subit l'événement.

      Tu n'as donc aucun besoin de récupérer le nom du bouton où que ce soit ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        13 septembre 2018 à 20:27:06

        Salut tout le monde,

        @Koalo01, cela peut avoir un sens, une fois j'étais confronté au même problème, c'était une application multimédia donc je ne voulais pas crée trop des boutons juste 4 donc bouton Play | Pause, Suivant(►|), Précédant(|◄) et Stop(▄), alors pour Play et Pause juste un même bouton qui devrait changer le texte à chaque clique sur le bouton donc changer le ►(play) en  ||(pause)  ou de ||(pause) en ► (play) alors vu que j'avais crée un signal qui envoyait le texte du bouton puis dans un slot, j'ai vérifié le texte pour le changer.

        Nota: je crois que je me suis répéter mais pour dire juste que cela peut avoir un sens ;)

        -
        Edité par EL-jos 13 septembre 2018 à 20:32:47

        • Partager sur Facebook
        • Partager sur Twitter

        Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .

          13 septembre 2018 à 22:06:36

          Es tu sur de n'avoir pas confondu le nom du bouton avec son texte ???
          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            13 septembre 2018 à 22:11:42

            ah oui @Koalo01, Ouais je dû confondre le nom du bouton(objectName) et son texte (text).

            • Partager sur Facebook
            • Partager sur Twitter

            Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .

            [Qt] Passage de nom de bouton dans autre fênetre

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown