赞
踩
继承QLabel,话不多说,直接上代码
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
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
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();
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
效果图:
可当按钮使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。