Inherit QLabel, don't say much, just go to the code
underlinebutton.h
#ifndef UNDERLINEBUTTON_H
#define UNDERLINEBUTTON_H
#include <QLabel>
#include <QMouseEvent>
class UnderlineButton : public QLabel
{
Q_OBJECT
public:
explicit UnderlineButton(QWidget *parent = 0);
explicit UnderlineButton(const QString &text, QWidget *parent=0);
bool isPress;
Q_SIGNALS:
void clicked();
public slots:
bool enterBtn(QPoint pp);
protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};
#endif // UNDERLINEBUTTON_H
underlinebutton.cpp
#include "underlinebutton.h"
UnderlineButton::UnderlineButton(QWidget *parent) : QLabel(parent)
{
isPress = false;
}
UnderlineButton::UnderlineButton(const QString &text, QWidget *parent) : QLabel(parent)
{
setText("<U>" + text + "</U>");
setStyleSheet("color:blue");
}
bool UnderlineButton::enterBtn(QPoint pp)
{
int height = this->height();
int width = this->width();
QPoint btnMaxPos;
btnMaxPos.setX(width);
btnMaxPos.setY(height);
if(pp.x() >= 0 && pp.y() >= 0 && pp.x() <= btnMaxPos.x() && pp.y() <= btnMaxPos.y())
return true;
else
return false;
}
void UnderlineButton::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
isPress = true;
setStyleSheet("color:red");
}
}
void UnderlineButton::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
isPress = false;
setStyleSheet("color:blue");
if (enterBtn(event->pos()))
{
emit clicked();
}
}
}
Renderings:
Can be used as a button