Qt的半透明方法总结

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

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

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

方法一:(适合自己绘画的图形)

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之间

你可能感兴趣的:(QT,qt,开发语言)