[学习记录] QT 窗体控件的透明度设置

  1. 整个窗体

当设置QT的窗体(QMainWindow, QDialog)时,直接用

 

targetForm->setWindowOpacity()

 

函数即可实现,效果为窗体及窗体内所有控件都透明化了。

二、自定义页面或控件

当设置一个QWidget(一般自定义页面或控件时用QWidget)时,直接设置其窗体透明度无法实现透明效果,目前找到的方法是将整个QWidget当做图形元素,对该图形元素进行设置透明度效果,

 

QGraphicsOpacityEffect *opacityEffect=new QGraphicsOpacityEffect;
targetElement->setGraphicsEffect(opacityEffect);
opacityEffect->setOpacity(0.7);

 

这样处理后就能实现透明化效果。

三、用颜色中的透明度值设置

如果需要将自己画的形状,控件背景,边框,文字等可以用颜色上色的地方进行透明化,只需要将该部位的颜色设置一个透明度即可。

 

// 画一个半透明圆角矩形
QPainter *painter = new QPainter(this);
painter->setPen(Qt::NoPen);
painter->setBrush(QColor(0,170,255,100)); // 最后一项为透明度
painter->setOpacity(0.6);
painter->drawRoundRect(0,0,100,100,10,10);// 画圆角矩形

 

// 设置某控件的背景颜色为半透明
QWidget *widget = new QWidget;// QWidget可以是任意QWidget派生的控件
widget->setAutoFillBackground(true);
  
QPalette palette;
palette.setColor(QPalette::Background, QColor(192,253,123,100)); // 最后一项为透明度
//palette.setBrush(QPalette::Background, QBrush(QPixmap(":/background.png")));
widget>setPalette(palette);
 
// 如果背景图片需要透明化,直接用一张半透明的png图片做背景或者用方法二将整个控件都半透明化。

 

这种用法一般用于需要设置透明的位置不多时才这样处理,如果自绘内容比较复杂,还是直接设置整体的透明度效果比较简单。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值