QPushButton 无贴图立体感点击思路

按钮展示

在这里插入图片描述

#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样式,也可以直接放在代码里面

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值