Qt如何實現界面的透明效果?

Qt提供了實現透明效果的類QGraphicsOpacityEffect,它的基類是QGraphicsEffect。


QWidget和QGraphicsItem要實現特效使用setGraphicsEffect函數,參數為QGraphicsEffect的指針。


QGraphicsOpacityEffect提供了兩個設置函數:

  1. setOpacity設置不透明度,默認值為0.7 可設置範圍為0到1,值越小越透明。
  2. setOpacityMask設置透明蒙版,用於指定界面中哪些地方透明,參數是一個畫刷(QBrush)。


例:在widget界面上拉三個按鈕,為三個按鈕設置不同的透明效果

Qt如何實現界面的透明效果?

第一個按鈕不設置陰影效果;第二個按鈕的不透明度設置為0.3;第三個設置透明蒙版為一個線性漸變的畫刷。其中漸變的位置使用的是按鈕的本地座標系。

Qt如何實現界面的透明效果?

從圖中可以看出第三個按鈕上下兩部分更透明,對應線性漸變setColorAt(0.0,Qt::transparent)和setColorAt(1.0,Qt::transparent)。雖然在0.5的位置設置顏色為紅色,但實際顯示中並沒有紅色。可見畫刷的顏色並不重要,關鍵在於顏色的alpha值。


文章來自個人博客


分享到:


相關文章: