-
整個窗體
當設置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圖片做背景或者用方法二將整個控件都半透明化。
這種用法一般用於需要設置透明的位置不多時才這樣處理,如果自繪內容比較復雜,還是直接設置整體的透明度效果比較簡單。
http://blog.csdn.net/jelly_chen_zo/article/details/45538755