按钮展示
#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <QGraphicsDropShadowEffect>
#include <QPushButton>
#include <QMouseEvent>
class MyButton : public QPushButton
{
Q_OBJECT
public:
explicit MyButton(QWidget* parent = nullptr);
private:
void initBtn();
//鼠标按下事件
void mousePressEvent(QMouseEvent *evt);
//鼠标释放事件
void mouseReleaseEvent(QMouseEvent *evt);
private:
QGraphicsDropShadowEffect* m_shadow;
};
#endif // MYBUTTON_H
#include "MyButton.h"
#include <QWidget>
#include <QDebug>
MyButton::MyButton(QWidget *parent)
:QPushButton(parent)
,m_shadow(new QGraphicsDropShadowEffect(this))
{
//初始化按钮
this->initBtn();
}
void MyButton::initBtn()
{
// 设置阴影范围
m_shadow->setBlurRadius(10);
// 设置阴影颜色
m_shadow->setColor("#151013");
// 设置阴影便宜
m_shadow->setOffset(3,7);
this->setGraphicsEffect(m_shadow);
this->setContentsMargins(1,1,1,1);
}
void MyButton::mousePressEvent(QMouseEvent *evt)
{
// 鼠标按下时去掉阴影
this->m_shadow->setBlurRadius(0);
m_shadow->setOffset(0,0);
QPushButton::mousePressEvent(evt);
}
void MyButton::mouseReleaseEvent(QMouseEvent *evt)
{
// 鼠标松开时恢复阴影
this->m_shadow->setBlurRadius(10);
m_shadow->setOffset(3,7);
QPushButton::mouseReleaseEvent(evt);
}
QSS
加QQ群讨论学习: 901201008
#pushButton{
color: rgb(49, 66, 92);
border-top:2px solid #6B6B6B;
background-color: rgb(51, 51, 51);
border-radius:5px;
}
#pushButton:pressed{
border-bottom:2px solid #6B6B6B;
border-top:0px solid #6B6B6B;
color: rgb(43, 58, 133);
background-color: qradialgradient(spread:pad, cx: 0.5, cy:0.5, radius:1.5, fx:0.5, fy:0.5,
stop:0 #333333,
stop:0.9 #000000);
}
可以通过设计器提升去设置按钮的QSS样式,也可以直接放在代码里面