[C++/Qt] Créer son QLabel pour signal Clicked

Résolu/Fermé
Vinc0016 - 10 nov. 2009 à 15:56
 Boz129 - 10 nov. 2009 à 16:17
Bonjour,

Je suis en train de faire une petite application en C++ avec Qt et je cherche à avoir le signal Clicked sur un QLabel. Comme il n'existe pas, j'ai pensé à créer mon propre QLabel et y redéfinir la fonction mouseReleaseEvent. Malheureusement, je n'y arrive pas.

Voici le code de mon MyLabel.h :

#ifndef DEF_MYLABEL
#define DEF_MYLABEL

#include <QLabel>
class MyLabel: public QLabel
{
    Q_OBJECT

    public:
    MyLabel();
    MyLabel(QWidget *parent);

    signals:
    void clicked();

    protected:
    virtual void mouseReleaseEvent(QMouseEvent *);

};
#endif


Le code de mon MyLabel.cpp :

#include "MyLabel.h"

MyLabel::MyLabel(): QLabel()
{}

MyLabel::MyLabel(QWidget *parent): QLabel(QWidget *parent)
{}

void MyLabel::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        emit clicked();
    }
}


Je ne vois pas ce que j'ai fait de mal et pourtant ça ne compile pas. J'ai 2 erreurs que voici :
MyLabel.cpp: In constructor ‘MyLabel::MyLabel(QWidget*)’:
MyLabel.cpp:6: error: expected primary-expression before ‘*’ token
MyLabel.cpp: In member function ‘virtual void MyLabel::mouseReleaseEvent(QMouseEvent*)’:
MyLabel.cpp:11: error: invalid use of incomplete type ‘struct QMouseEvent’
/usr/include/qt4/QtGui/qwidget.h:75: error: forward declaration of ‘struct QMouseEvent’


La première concerne le constructeur que j'ai repris et la seconde concerne l'utilisation de QMouseEvent.

Pouvez-vous m'éclairer ?

Merci
A voir également:

1 réponse

#include <QMouseEvent>

Pour le 2ème constructeur :
MyQLabel::MyQLabel ( QWidget *parent, Qt::WindowFlags f): QLabel()
{}

Ca devrait mieux marcher !
3