QT 窗体控件的透明度设置

(一)整个窗体

targetForm->setWindowOpacity() ;

函数即可实现,效果为窗体及窗体内所有控件都透明化了

(二)自定义页面或控件

当设置一个QWidget(一般自定义页面或控件时用QWidget)时,直接设置其窗体透明度无法实现透明效果,目前找到的方法是将整个QWidget当做图形元素,对该图形元素进行设置透明度效果,

 QLabel::paintEvent(eve);
    QPainter painter(this);
    // 如果是透明style,则更新透明度
    if (m_style == TRANSPARENTSTYLE)
    {
        if (m_enter) {
            painter.setOpacity(0.6);//控件的透明度设置
        }
    }
    painter.drawPixmap(0, 0, m_pic);

这样处理后就能实现透明化效果。

(三)用颜色中的透明度值设置

如果需要将自己画的形状,控件背景,边框,文字等可以用颜色上色的地方进行透明化,只需要将该部位的颜色设置一个透明度即可。

// 画一个半透明圆角矩形
QPainter *painter = new QPainter(this);
painter->setPen(Qt::NoPen);
painter->setBrush(QColor(0,170,255,100)); // 注意:最后一项为透明度!!!
painter->setOpacity(0.6);
painter->drawRoundRect(0,0,100,100,10,10);// 画圆角矩形
// 设置某控件的背景颜色为半透明
QWidget *widget = new QWidget;// QWidget可以是任意QWidget派生的控件
widget->setAutoFillBackground(true);

 

posted @ 2023-02-21 21:30  ImreW  阅读(917)  评论(0编辑  收藏  举报