-
整个窗体
当设置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;
- widget->setAutoFillBackground(true);
-
- QPalette palette;
- palette.setColor(QPalette::Background, QColor(192,253,123,100));
- widget>setPalette(palette);
-
这种用法一般用于需要设置透明的位置不多时才这样处理,如果自绘内容比较复杂,还是直接设置整体的透明度效果比较简单。
http://blog.csdn.net/jelly_chen_zo/article/details/45538755
QT 窗体控件的透明度设置(三种方法)
原文:http://www.cnblogs.com/findumars/p/7270685.html