Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème signals/slots paramétrés

Sujet résolu
    13 février 2019 à 11:39:38

    Bonjour,

    Mes signals/slots paramétrés ne marche pas.

    QT me retourne ceci :

    QObject::connect: No such signal WPupiTouchMain::majLabelProg(QLabel) in ..\PupiTouch\wpupitouchmain.cpp:8

    QObject::connect: (sender name: 'WPupiTouchMain')

    QObject::connect: (receiver name: 'WPupiTouchMain')

    QObject::connect: Cannot connect (null)::majLcdCredit(int) to WPupiTouchMain::updateLcdCredit(int)

    Mon projet ce compose pour l'instant de deux classe WPupiTouchMain et WPupiTouchCTLPayment.

    Je précise que WPTCTLPayment est un pointeur de WPupiTouchCTLPayment déclarer dans WPupiTouchMain.h.

    WPupiTouchMain.h

    private slots:
    
        void countdownGestion(QLabel *labelProg);
    
        void updateLcdCredit(); //celui la marche
        void updateLcdCredit(int credit);
    
    signals:
    
        void majLabelProg(QLabel*);
        void majLcdCredit();


    WPupiTouchMain.cpp

    WPupiTouchMain::WPupiTouchMain(QWidget *parent):QWidget(parent), ui(new Ui::WPupiTouchMain)
    {
        ui->setupUi(this);
    
        connect(this, SIGNAL(majLabelProg(QLabel)), this, SLOT(countdownGestion(QLabel)));
    
        connect(this, SIGNAL(majLcdCredit()), this, SLOT(updateLcdCredit()));
        connect(WPTCTLPayment, SIGNAL(majLcdCredit(int)), this, SLOT(updateLcdCredit(int)));
    }
    void WPupiTouchMain::countdownGestion(QLabel *labelProg)
    {
        calculateTimeRemaining(labelProg);
    
        int m;
        int s;
    
        m = timeRemaining/60;
        s = m/60;
    
        labelProg->setText(QString::number(m)+" : "+QString::number(s));
    
        timeRemaining -= 1;
    }
    
    void WPupiTouchMain::updateLcdCredit()
    {
        ui->lcdCredit->display(this->credit);
    }
    
    void WPupiTouchMain::updateLcdCredit(int credit)
    {
        this->credit = credit;
    
        ui->lcdCredit->display(this->credit);
    }
    void WPupiTouchMain::on_pbCancel_clicked()
    {
        credit = 4;
    
        emit majLcdCredit();
    
        emit majLabelProg(ui->labelProg1);
        emit majLabelProg(ui->labelProg2);
        emit majLabelProg(ui->labelProg3);
        emit majLabelProg(ui->labelProg4);
        emit majLabelProg(ui->labelProg5);
        emit majLabelProg(ui->labelProg6);
        emit majLabelProg(ui->labelProg7);
        emit majLabelProg(ui->labelProg8);
    }

     WPupiTouchCTLPayment.h

    signals:
    
        void majLcdCredit(int);

    WPupiTouchCTLPayment.cpp

    void WPupiTouchCTLPayment::on_pbValidateCTLPayment_clicked()
    {
        if(ui->pbPass1->isChecked() == true || ui->pbPass2->isChecked() == true || ui->pbPass3->isChecked() == true ){
            emit majLcdCredit(PassCredit);
        }
        else{emit majLcdCredit(CreditFreelyFixed);
        }
    
        this->deleteLater();
    }

    -
    Edité par robindesoibs 13 février 2019 à 11:43:04

    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2019 à 11:48:00

      Dans le constructeur de WPupiTouchMain, ta variable WPTCTLPayment n'existe pas.

      -
      Edité par Maluna34 13 février 2019 à 11:57:42

      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2019 à 11:54:49

        j'ai résolue un de mes problèmes : QObject::connect: Cannot connect (null)::majLcdCredit(int) to WPupiTouchMain::updateLcdCredit(int)

        Cette ligne était du au fait que j'essayer de créer la connexion alors que je n'avais pas encore créer l'objet qui devait l’émettre, (mon pointeur, WPTCTLPayment, était initialiser à 0, et l'objet sur lequel il doit pointer n'était pas encore créer).  

        Deuxième erreur résolue je plaçais des QLabel en paramètre dans mon "connect" alor qu'il fallait que je passe des pointeurs de QLabel, (QLabel*).

        -
        Edité par robindesoibs 13 février 2019 à 12:05:56

        • Partager sur Facebook
        • Partager sur Twitter

        Problème signals/slots paramétrés

        × 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