BigSurWidget

自定义的一个包含 圆角,透明 以及 阴影的 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();
}

预览图

资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在本文中,我们将详细探讨如何利用Java编程语言开发一个完整的计算器应用程序。该计算器具备加、减、乘、除以及处理小数点的基本功能。通过这个项目,你将加深对Java控制流程、运算符和字符串处理的理解。 首先,Java中的加、减、乘、除运算可以通过基本的算术运算符实现:加法用"+",减法用"-",乘法用"*",除法用"/"。在开发计算器程序时,我们需要将用户的输入解析为可执行的数学表达式。这通常涉及将输入的字符串拆分为操作数和运算符,并通过栈或队列等数据结构来处理运算顺序,依据运算符的优先级进行计算。对于加、减、乘、除运算,我们可以分别为每种运算创建一个方法,例如: 接下来是小数点功能。在Java中,小数点用于表示浮点数。处理小数点的核心在于正确解析用户输入并将其转换为数值。可以使用Scanner类读取用户输入,并通过nextDouble()方法获取浮点数。对于包含小数点的输入,需要确保输入有效,即小数点后至少有一个数字。例如: 为了实现计算器的功能,还需要一个循环来持续接收用户输入,直到用户选择退出。可以通过一个无限循环结合用户输入的退出指令(如“quit”或“exit”)来实现。同时,需要处理错误输入,例如非数字字符或无效的数学表达式。例如: 在本项目中,你还将学习如何设计用户友好的界面,例如使用System.out.println()和System.out.print()输出提示信息,以及使用BufferedReader或Scanner读取用户输入。为了使代码更加模块化,可以创建一个Calculator类,将所有计算逻辑封装其中,主程序则负责用户交互。 “Java计算器完整代码”项目是一个很好的学习实践,它涵盖了Java基础、数据类型、运算符、控制流、异常处理和面向对象编程等核心概念
内容概要:本文详细介绍了2021年全国大学生电子设计竞赛D题“基于互联网的摄像测量系统”的背景、任务解析、技术难点、解决方案及其实测效果。文章首先阐述了该题目的实际意义和应用前景,强调其在工业检测、智能安防等领域的广泛应用价值。接着,深入剖析了题目要求,包括系统构成、测量对象及精度要求等,并指出了测量精度、图像处理和网络传输等关键难点。文中对比了不同硬件和算法方案的优劣,最终选择了成本较低且开发简单的树莓派搭配USB摄像头方案,并采用传统图像处理算法进行激光笔识别。通过实测检验,系统在大多数情况下达到了基本要求,但也暴露出一些问题,如在极端条件下测量误差较大、视频卡顿等。最后,作者分享了参赛过程中的技术与非技术收获,并对未来摄像测量系统的发展进行了展望。 适合人群:具备一定电子设计基础的大学生、电子爱好者及从事相关领域工作的工程师。 使用场景及目标:①帮助参赛者理解2021电赛D题的具体要求和技术难点;②为类似项目的开发提供参考,包括硬件选型、算法选择及优化策略;③促进对摄像测量系统在工业检测、智能安防等领域应用的深入了解。 阅读建议:本文不仅涵盖了从原理到代码实操的全过程,还包含了丰富的实践经验和技术细节,建议读者结合自身实际情况,重点关注硬件选型、算法实现及优化调试等方面的内容,以便更好地应用于实际项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值