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
Configuration: Linux
Firefox 3.5.4