#ifndef _LABEL_H_
#define _LABEL_H_
#include "QLabel"
#include <QWidget>
#include "qcoreevent.h"
#include "qevent.h"
#include "qtimer.h"
class Label:public QLabel
{
Q_OBJECT
public:
explicit Label(QWidget *parent = 0);
~Label();
protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
private:
bool mouse_press;
int clicked_num;
QTimer* timer;
private slots:
void SlotTimerOut();
signals:
void LabelClicked();
void LabelDoubleClicked();
};
#endif //_LABEL_H_
#include "label.h"
Label::Label( QWidget *parent /*= 0*/ ):QLabel(parent)
{
mouse_press = false;
clicked_num = 0;
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(SlotTimerOut()));
}
Label::~Label()
{
delete timer;
}
void Label::mousePressEvent( QMouseEvent *event )
{
if (event->button() == Qt::LeftButton)
{
mouse_press = true;
}
}
void Label::mouseReleaseEvent( QMouseEvent *event )
{
if(mouse_press && this->rect().contains(event->pos()))
{
clicked_num++;
mouse_press = false;
timer->start(200);
}
}
void Label::SlotTimerOut()
{
if (clicked_num == 1)
{
emit LabelClicked();
}
if (clicked_num >= 2)
{
emit LabelDoubleClicked();
}
clicked_num = 0;
timer->stop();
}