Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de refresh QLCDNumber

Sujet résolu
    27 mars 2019 à 21:34:51

    Bonjour à vous,

    Une classe declanche un signal lors de l'appuis sur un bouton afin d'incrémenter le QLCDNumber d'une autre classe.

    le probleme c'est que à l'ecran rien ne se passe. On rentre bien dans le slot car mon cout me le dit mais ma fenetre qui contient le QLCDNumber reste a  0... 

    Merci pour votre aide 

    -
    Edité par Mars8 27 mars 2019 à 21:35:10

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2019 à 11:37:15

      Sans code on va pas pouvoir t'aider.
      • Partager sur Facebook
      • Partager sur Twitter

      git is great because Linus did it, mercurial is better because he didn't.

        28 mars 2019 à 11:39:59

        Et sans aide tu vas pas pouvoir coder. :soleil:
        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2019 à 14:49:12

          Dans la classe actuel, j'arrive a linké un signal pour envoyer une valeur a mon QLCDNumber .. mais impossible depuis une classe exterieur ... 

          a moins que je reactualise mon instance d'affichage de la fenetre par un .show() ... 

          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2019 à 14:51:32

            markand a écrit:

            Sans code on va pas pouvoir t'aider.



            • Partager sur Facebook
            • Partager sur Twitter
              28 mars 2019 à 15:07:42

              voici le slot de la classe qui met a jour le QLCDNumber : 

              void Window018703::set_lcdNumber_seatUp(int a)
              {
                  int B = 1;
                  cout << " önt rentre ici et a vaut = " << B << endl;
                  ui->lcdNumber_seatUp->display(B);
              }
              

              si je fais ce connect dans la meme classe qui receptionne le slot ce fonctionne : 

                  QObject::connect(ui->pushButton, &QPushButton::clicked, this, &Window018703::set_lcdNumber_seatUp);
              

              par contre si je le lance depuis une autre classe : 

              QObject::connect(ui->pushButton_018704, &QPushButton::clicked , window018703, &Window018703::set_lcdNumber_seatUp);
              


              ca ne marche pas ..

              de plus j'arrive pas a envouyer une valeur en int a mon slot ... car ce que je voudrais faire cest que sur un evenement exterieur, j'increment ce fameux QLCDNumber ... 

              Merci 




              • Partager sur Facebook
              • Partager sur Twitter
                28 mars 2019 à 15:54:08

                Quelle version de QT utilises-tu ? De mémoire, QT 4 demande à ce que SIGNAL SLOT possède la même signature.

                • Partager sur Facebook
                • Partager sur Twitter
                  28 mars 2019 à 15:59:47

                  QT 5.11.2 MSVC2015 32 BIT

                  et le kit : 

                  QT 5.11.2 MSVC2017 64BIT2

                  je prend les valeurs par defaut ...

                  -
                  Edité par Mars8 28 mars 2019 à 16:00:53

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mars 2019 à 16:17:25

                    Désolé ma question n'avait pas lieu d'être, tu utilises des pointeurs de fonctions, donc par définition QT 5.

                    Ici la méthode ne semble pas être surchargé (dis moi si je me trompe mais la méthode set_lcdNumber_seatUp n'est définit qu'avec un int en paramètre) , la vérification se faisant à la compilation, il tape directement sur cette méthode.

                    Peut-on voir l'instanciation de window018703 et surtout où l'as-tu instancié ?

                    -
                    Edité par Didy7 28 mars 2019 à 16:35:12

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mars 2019 à 16:21:06

                      Salut,

                      Ta classe hérite bien de QObject ou QWidget ?

                      A tu pence a mettre "Q_OBJECT" ?


                      fait attention je ne c'est pas si c'est se que tu veut mais c'est toujours la même valeur dans la fonction "set_lcdNumber_seatUp"

                      std::cout << "on rentre ici et a vaut = " << a << std::endl;



                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 mars 2019 à 16:25:43

                        le slot 

                        set_lcdNumber_seatUp

                        est defini comme ceci : 

                            public slots:
                                void windowView();
                                void set_lcdNumber_seatUp(int a = 1);


                        ce que je voudrait cest incrementer mon affichage dans le 

                        lcdNumber_seatUp

                        du QLCDNumber.. 

                        du coup je comprend pas tres bien ce que je dois lui envoyer ou pas .. 

                        Didy7 a écrit:

                        Peut-on voir l'instanciation de window018703 et surtout où l'as-tu instancié ?

                        Si je suis dans la classe actuelle ( Window018703) j'utilise this, 


                        sinon voici l'autre classe : 

                        #include "window018704.h"
                        #include "ui_window018704.h"
                        #include <iostream>
                        
                        using namespace std;
                        
                        Window018704::Window018704(QWidget *parent) :
                            QDialog(parent),
                            ui(new Ui::Window018704)
                        {
                            ui->setupUi(this);
                            cout << " classe 704 ... " <<  endl;
                        
                           Window018703 *window018703 = new Window018703();
                           QObject::connect(ui->pushButton_018704, &QPushButton::clicked , window018703, &Window018703::set_lcdNumber_seatUp);
                        
                        }
                        
                        Window018704::~Window018704()
                        {
                            delete ui;
                        }
                        
                        void Window018704::windowView()
                        {
                            this->show();
                        }

                        di20 a écrit:

                        Salut,

                        Ta classe hérite bien de QObject ou QWidget ?

                        A tu pence a mettre "Q_OBJECT" ?


                        fait attention je ne c'est pas si c'est se que tu veut mais c'est toujours la même valeur dans la fonction "set_lcdNumber_seatUp"

                        std::cout << "on rentre ici et a vaut = " << a << std::endl


                        oui mes classes ont ete créer avec design en .ui ... 

                        non de base je voudrais du +1 a chaque fois que je rentre dedans ...

                        si ca peu aide voici ma classe qui contient le slot : 

                        #include "window018703.h"
                        #include "ui_window018703.h"
                        #include <iostream>
                        
                        //#define  B 1
                        using namespace std;
                        Window018703::Window018703(QWidget *parent) :
                            QDialog(parent),
                            ui(new Ui::Window018703)
                        {
                            ui->setupUi(this);
                            //int a =5;
                            cout << " nous somme avant l'appuis " <<  endl;
                        
                            QObject::connect(ui->pushButton, &QPushButton::clicked, this, &Window018703::set_lcdNumber_seatUp);
                            cout << " nous somme apres l'appuis " <<  endl;
                        
                        }
                        
                        Window018703::~Window018703()
                        {
                            delete ui;
                        }
                        
                        void Window018703::windowView()
                        
                        {
                            this->show();
                        }
                        
                        void Window018703::set_lcdNumber_seatUp(int a)
                        {
                            int B = 1;
                            cout << " önt rentre ici et a vaut = " << B << endl;
                            ui->lcdNumber_seatUp->display(B);
                        }
                        



                        et oui jai bien dans les deux classe le fameux mot clef Q_OBJECT

                        Euuux mes deux classeherite de QDialog ... 
                        fin elles sont comme cela : 

                        Window018704.h :
                        #ifndef WINDOW018704_H
                        #define WINDOW018704_H
                        
                        #include <QDialog>
                        #include "window018703.h"
                        #include <QApplication>
                        #include <QObject>
                        
                        namespace Ui {
                        class Window018704;
                        }
                        
                        class Window018704 : public QDialog
                        {
                            Q_OBJECT
                        
                            public:
                                explicit Window018704(QWidget *parent = nullptr);
                                ~Window018704();
                        
                            public slots:
                                void windowView();
                        
                        private slots:
                                //void on_pushButton_018704_clicked();
                        
                        
                        private:
                                Ui::Window018704 *ui;
                        };
                        
                        #endif // WINDOW018704_H
                        Window018703.h:
                        #ifndef WINDOW018703_H
                        #define WINDOW018703_H
                        
                        #include <QDialog>
                        #include <QApplication>
                        #include <QtWidgets>
                        
                        
                        namespace Ui {
                        class Window018703;
                        }
                        
                        class Window018703 : public QDialog
                        {
                            Q_OBJECT
                        
                            public:
                                explicit Window018703(QWidget *parent = nullptr);
                                ~Window018703();
                        
                            /*get*/
                        
                            /*set*/
                                //void set_lcdNumber_seatUp(int);
                        
                            //void set_lcdNumber_seatUp(int);
                        
                        
                            public slots:
                                void windowView();
                                void set_lcdNumber_seatUp(int a = 1);
                        
                        
                        private:
                                Ui::Window018703 *ui;
                        };
                        
                        #endif // WINDOW018703_H
                        


                        et mon main : 

                        #include <QApplication>
                        #include <QtWidgets>
                        #include <QLabel>
                        
                        #include "window1.h"
                        #include "window018703.h"
                        #include "window018704.h"
                        
                        
                        using namespace std;
                        int main(int argc, char *argv[])
                        {
                            QApplication app(argc, argv);
                               window1 window1;
                               window1.show();
                        
                              
                            return app.exec();
                        }
                        






                        -
                        Edité par Mars8 28 mars 2019 à 16:59:04

                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 avril 2019 à 15:29:29 - Message modéré pour le motif suivant : Inutile ... Nous sommes tous bénévoles ici ...


                            1 avril 2019 à 15:51:28

                            Si tu rentres bien dans ton slot :

                            void Window018703::set_lcdNumber_seatUp(int a)
                            {
                                int B = 1;
                                cout << " önt rentre ici et a vaut = " << B << endl;
                                ui->lcdNumber_seatUp->display(B);
                            }

                            C'est que ça doit venir de la dernière ligne mais elle semble correcte. T'arrives à récupérer et afficher une propriété de ton widget ? Genre ajouter dans ton cout ui->lcdNumber_seatUp->intValue()

                            -
                            Edité par Maluna34 1 avril 2019 à 15:52:19

                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 avril 2019 à 20:18:50

                              je crois avoir compris pour quelles raisons cela ne marche pas, en faite je crée une nouvelle instance en faisant ceci :    Window018703 *window018703 = new Window018703();

                              le probleme c'est que la classe est deja instancié et affiché , donc jai beau incrementer et rentrer dans le SLOT, si cest sur une autre instance qui n'est pas visible, ca ne fonctionne pas.

                              Du coup j'ai essayer de recuperer l'instance en la mettant membre puis avec un get mais je n'y arrive pas .. je pense que la solution est la ...

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Probleme de refresh QLCDNumber

                              × 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