【Qt学习】QWidget的windowOpacity属性介绍与实例使用(双重检查的引入)

1. windowOpacity 介绍

在这里插入图片描述

我们可以查阅qt的官方文档,进行总结:

  • windowOpacity() 表示窗口的不透明度级别。有效的范围是从1.0(完全不透明)到0.0(完全透明)。默认情况下,该属性的值为1.0

windowOpacity包含两接口函数:

API说明
windowOpacity()获取控件的不透明度,并返回float类型
setWindowOpacity()设置控件的不透明数值

2. 使用实例

我们利用上述的两个接口,实现调整窗口不透明度的操作:

  1. 首先创建两个按钮:

在这里插入图片描述

  1. 通过 转到槽 各自写出相应的槽函数:
void Widget::on_pushButton_add_clicked()
{
    // 获取窗口不透明度数值
    float opacity = this->windowOpacity();
    // 如果不透明度,已经到峰值,则不继续增加
    if(opacity >= 1.0) return;

    // 打印并增加不透明度
    qDebug() << opacity;

    opacity += 0.1;
    this->setWindowOpacity(opacity);
}

void Widget::on_pushButton_sub_clicked()
{
    float opacity = this->windowOpacity();
    if(opacity <= 0.0) return;

    qDebug() << opacity;

    opacity -= 0.1;
    this->setWindowOpacity(opacity);
}

效果演示:

请添加图片描述

3. 题外话 - 双重检查(doubleCheck)

在上面的例子中,我们在槽函数的实现时,首先进行了opacity范围的判定

在这里插入图片描述

  • 实际上,setWIndowOpacity()函数内部本身就进行了数值的判定,即使不加范围判断,代码也成立。

Question

为什么不加范围判断,代码也成立,但还是加上判定?

Answer

  • 这是一种防御性编程
    1. 对于大的项目,往往会被拆分成多个模块,由不同的组 / 个人负责完成;模块间存在交互,即模块A会提供API(函数、类等)给模块B使用。
    2. 如果对某个变量其数值应保持在一定的范围内,如果函数内部实现没有进行范围判断、而调用者也没有进行外部判断,就会出错。
    3. 代码中函数内部进行判断、而外部调用也判断的方案即双重判定,可以降低代码出错率。

代码资源

上面涉及到的代码等文件资源点这里👇

QWidget的windowOpacity属性

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值