BigSurWidget

1 篇文章 0 订阅

自定义的一个包含 圆角,透明 以及 阴影的 Widget,可以方便地做成MacOS BigSur那种控件样式。

#ifndef BIGSURSTYLEWIDGET_H
#define BIGSURSTYLEWIDGET_H

#include <QWidget>
#define BG_COLOR QColor(31, 181, 231)
#define SHADOW_COLOR QColor("#444444")
class QPainter;

class BigSurStyleWidget : public QWidget
{
public:
    BigSurStyleWidget(const QColor& backgroundColor = BG_COLOR, const QColor& shadowColor = SHADOW_COLOR, QWidget* parent = 0);
    // The valid range of opacity is from 1.0(completely opaque) to 0.0(completely transparent);
    void setOpacity(float opacity);
    // Set widget background color;
    void setBackgroundColor(const QColor& color);

protected:
    void paintEvent(QPaintEvent*);
private:
    QColor m_backgroundColor;
    float  m_opacity = 1.0;
};

#endif // BIGSURSTYLEWIDGET_H

 

#include "bigsurstylewidget.h"
#include <QPainter>
#include <QGraphicsDropShadowEffect>

BigSurStyleWidget::BigSurStyleWidget(const QColor& bgColor, const QColor& shadowColor, QWidget* parent)
    :QWidget(parent), m_backgroundColor(bgColor), m_opacity(1.0)
{
    QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(this);
    effect->setOffset(0);
    effect->setColor(shadowColor);
    effect->setBlurRadius(15);
    this->setGraphicsEffect(effect);
    this->setAttribute(Qt::WA_TranslucentBackground);
}

void BigSurStyleWidget::paintEvent(QPaintEvent *e)
{
    m_backgroundColor.setAlpha(m_opacity * 255);
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setBrush(m_backgroundColor);
    painter.setPen(Qt::transparent);
    QRect rect = this->rect();
    rect.setWidth(rect.width() - 1);
    rect.setHeight(rect.height() - 1);
    painter.drawRoundedRect(rect, 10, 10);
    QWidget::paintEvent(e);
}

void BigSurStyleWidget::setBackgroundColor(const QColor &color)
{
    m_backgroundColor = color;
    m_backgroundColor.setAlpha(m_opacity * 255);
    update();
}

void BigSurStyleWidget::setOpacity(float o)
{
    m_opacity = o;
    update();
}

预览图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值