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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM