Bonjour,

J'ai eu besoin de définir une transition en sous-classant QAbstractTransition.

Ce que je veux faire, c'est que la transition s'effectue si le nombre passé en paramètre de l'event associé soit > 0

Voici mon code :

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
 
struct PhasesRestantesEvent : public QEvent
{
    PhasesRestantesEvent(const uint &val)
        : QEvent(QEvent::Type(QEvent::User+1)),
          value(val) {}
 
        QString value;
};
 
class et_TransitionPhasesRestantes : public QAbstractTransition
{
public:
     et_TransitionPhasesRestantes() {}
 
 protected:
     virtual bool eventTest(QEvent *e) const
     {
         if (e->type() != QEvent::Type(QEvent::User+1)) // PhasesRestantesEvent
             return false;
         PhasesRestantesEvent *pre = static_cast<PhasesRestantesEvent*>(e);
         return (pre->value > 0);
     }
 
     virtual void onTransition(QEvent *) {}
};
Le problème, c'est que je ne peut pas instancier un objet de type et_TransitionPhasesRestantes. Le compilateur me dit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
../executiontest.cpp:73: error: cannot allocate an object of abstract type ‘et_TransitionPhasesRestantes’
../et_transitionphasesrestantes.h:49: note:   because the following virtual functions are pure within ‘et_TransitionPhasesRestantes’:
/usr/include/qt4/QtCore/qabstracttransition.h:98: note: 	virtual bool QAbstractTransition::eventTest(QEvent*)
Pourtant, la méthode est bien redéfinie!

Merci de m'éclairer sur cette erreur dont je ne comprend pas la cause...