Qt提供了實現透明效果的類QGraphicsOpacityEffect,它的基類是QGraphicsEffect。
QWidget和QGraphicsItem要實現特效使用setGraphicsEffect函數,參數為QGraphicsEffect的指針。
QGraphicsOpacityEffect提供了兩個設置函數:
- setOpacity設置不透明度,默認值為0.7 可設置範圍為0到1,值越小越透明。
- setOpacityMask設置透明蒙版,用於指定界面中哪些地方透明,參數是一個畫刷(QBrush)。
例:在widget界面上拉三個按鈕,為三個按鈕設置不同的透明效果
第一個按鈕不設置陰影效果;第二個按鈕的不透明度設置為0.3;第三個設置透明蒙版為一個線性漸變的畫刷。其中漸變的位置使用的是按鈕的本地座標系。
從圖中可以看出第三個按鈕上下兩部分更透明,對應線性漸變setColorAt(0.0,Qt::transparent)和setColorAt(1.0,Qt::transparent)。雖然在0.5的位置設置顏色為紅色,但實際顯示中並沒有紅色。可見畫刷的顏色並不重要,關鍵在於顏色的alpha值。
文章來自個人博客
關鍵字: 畫刷 setColorAt 效果