Qt的半透明方法总结

来源:互联网 发布:dhcp 端口号43端口号 编辑:程序博客网 时间:2024/06/07 02:10

如果是QWidget,可以重写了它的void paintEvent(QPaintEvent *);事件

如果是QGraphics,可以重写它的void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);事件

如果是QML,可以直接设置颜色的rgba值


方法一:(适合自己绘画的图形)
Qt的半透明方法总结

QPainter painter(this);

this->setAttributte(Qt::WA_TranslucentBackground, true);//关键

painter.setBrush(QColor(0,0,0,100));//最后一位是设置透明属性(在0-255取值)

painter.drawRect(0,0, this->widh(), this->height());

这样就画了一个从原点到窗口大小的半透明矩形。


方法二:(适合Qt带的继承子Widget部件)

setStyleSheet(重写它的样式中四个参数的最后一位代表透明度的值);//rgba的最后一位是控制透明度的0-255.

比如this->setStyleSheet("background-color:rgba(244,244,244,2)");//这是设置背景透明

注:

   设置成this->setStyleSheet("background-color:rgba(244,244,244,1)")反而不透明了;
   设置成this->setStyleSheet("background-color:rgba(244,244,244,0)")不能点击到透明区域;


方法三:(适合使整个窗体透明)
setWindowOpacity(设置整个窗体透明值)
这个值在0-1之间
0 0
原创粉丝点击