Bonjour,

Un problème qui se pose souvant: j'ai un objet de la librairie Qt qui émet un signal avec un(des) argument(s) qui ne me convient(nent) pas. Je suis obbliger d'heriter de cet classe:

Si on a une classe quelconque ClasseA qui possède un signal quelconque signalA(typeA) dans la librairie Qt. Je crée une classe ClasseB héritée de ClasseA. Je veux ajouter un signal signalB(typeB) à ClasseB. Ce signal doit se déclancher quand signalA est émit.

J'ai une solution barbare:

Je crée un nouveau slot slotB() dans ma ClasseB.
Je connecte signalA à slotB comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
connect(this,SIGNAL(signalA(typeA)),this,SLOT(slotB()));
C'est possible nb arguments identiques slot <= nb arguments identiques signal

Je définie slotB() comme cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
void slotB(){
typeB nouvelObjet;
emit signalB(nouvelObjet);
}
En bref:

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
#include <ClasseA>
 
class ClasseB : public ClasseA
{
public:
    Classe B():ClasseA()
    {
        connect(this,SIGNAL(signalA(typeA)),this,SLOT(slotB()));
    }
signals:
    void signalB(typeB);
private slots:
    void slotB()
    {
        typeB nouvelObjet;
        emit signalB(nouvelObjet);
    }
}
Y a-t-il de meilleurs méthodes?