Qt窗口透明设置与窗口的父子关系

本文总结了在Qt开发中遇到的窗口透明度设置问题,包括setWindowOpacity实现窗口整体透明,setAttribute创建完全透明窗口并探讨其对边框和子控件的影响,QPainter和painterEvent用于自定义透明效果,以及QPalette在不同情况下的应用限制。重点讨论了窗口作为子控件时透明效果的实现条件。
摘要由CSDN通过智能技术生成

前言

  • 不同的项目的需求往往迥然不同,对于透明度设置更是如此,因此本文就开发过程中遇到的透明度设置问题进行小小的总结。

透明度设置

setWindowOpacity

  • 可以改变当前窗口的透明度,但是该窗口的子控件都会变透明
    setWindowOpacity

setAttribute

  • 使用setAttribute(Qt::WA_TranslucentBackground),可以将窗口设置成完全透明,但是不可以设置成半透明。
  • 使用setAttribute(Qt::WA_TranslucentBackground)设置窗口透明,需要同时将窗口设置成无边框。
  • 这种方法设置后窗口将完全透明,鼠标将穿透窗口,但子控件正常显示,不受影响。

QPainter和painterEvent

  • 使用QPainter设置窗口透明度,需要先用setAttribute的办法将窗口设置成完全透明,然后在透明窗口上绘制上自定义的透明颜色。
// 窗口无边框
this->setWindowFlag(Qt::FramelessWindowHint);
// 窗口透明
this->setAttribute(Qt::WA_TranslucentBackground)
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值