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值。


文章来自个人博客


分享到:


相關文章: