qt 窗体透明,控件不透明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 窗体透明,控件不透明相关的知识,希望对你有一定的参考价值。

参考技术A Qt窗体透明控件不透明,这个你点击那个设置。他就会用那个透明不透明的设置 参考技术B 如果要动态的修改,需要重新计算和绘画背景的,这个工作量很大,不太可能提供这么一个方法的。
你可以看看qt的setWindowOpacity的源代码,整合到自己代码里。
参考技术C 不透明的就是好看一下的呢,毕竟主要就是透明的可以更加不错的显示的。
所以也就是这样呀

QT 窗体控件的透明度设置(三种方法)

  1. 整个窗体

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

 

[cpp] view plain copy
 
  1. targetForm->setWindowOpacity()  

 

 

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

二、自定义页面或控件

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

 

[cpp] view plain copy
 
  1. QGraphicsOpacityEffect *opacityEffect=new QGraphicsOpacityEffect;  
  2. targetElement->setGraphicsEffect(opacityEffect);  
  3. opacityEffect->setOpacity(0.7);  

 

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

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

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

 

[cpp] view plain copy
 
  1. // 画一个半透明圆角矩形  
  2. QPainter *painter = new QPainter(this);  
  3. painter->setPen(Qt::NoPen);  
  4. painter->setBrush(QColor(0,170,255,100)); // 最后一项为透明度  
  5. painter->setOpacity(0.6);  
  6. painter->drawRoundRect(0,0,100,100,10,10);// 画圆角矩形  

 

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

 

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

 

http://blog.csdn.net/jelly_chen_zo/article/details/45538755

以上是关于qt 窗体透明,控件不透明的主要内容,如果未能解决你的问题,请参考以下文章

QT 窗体控件的透明度设置(三种方法)

Qt窗口透明

Qt 中设置窗体透明度的几种方法

delphi 怎样绘制半透明窗体,只让窗体背景半透明,而窗体里面的控件 不透明

VB窗体透明问题!

Qt 窗体不变透明却变黑