Qt设置窗体透明 您所在的位置:网站首页 507焊条怎么起弧 Qt设置窗体透明

Qt设置窗体透明

2023-06-30 07:20| 来源: 网络整理| 查看: 265

这几天研究了下Qt关于窗体透明的方法,不同的方法有着不同的效果,今天在此总结一下。界面结构如下:

全透明

setWindowOpacity(double value)。该函数用来设置窗体透明度,有效范围从1.0到0.0,并且会影响子控件。默认情况下,此属性的值是1.0(不透明)。

//全透明 setWindowOpacity(0.7); 子控件透明

使用Qt样式表,background:rgba(r,g,b,opacity),rgb是颜色值,opacity是设置为半透明的透明度,有效范围从1.0到0.0。使用样式表设置一张背景图,widget和label的透明度,关于样式表可以在Qt Designer进行设置。(设置透明度要指定对象,避免影响其他控件)

//子控件透明 this->setStyleSheet("#centralWidget{border-image:url(://timg.jpg);}" "#label{background:rgba(255,255,0,0.4);}" "#widget{background:rgba(255,0,0,0.3);}"); 父窗口透明

情况一:背景无图片。设置属性Qt::WA_TranslucentBackground将MainWindow变为全透明,在windows上这个属性需配合Qt::FramelessWindowHint使用。然后设置centralWidget样式中的opacity调节父窗口的透明度并设置子控件的不透明。

this->setWindowFlags(Qt::FramelessWindowHint);//需要去掉标题栏 this->setAttribute(Qt::WA_TranslucentBackground); this->setStyleSheet("#centralWidget{background:rgba(0,255,255,0.4);}" "#label{background:rgba(255,255,0,1);}" "#widget{background:rgba(0,255,255,1);}");

情况二:背景有图片。仍然使用属性Qt::WA_TranslucentBackground将MainWindow变为全透明。然后在paintevent中将图片绘制在窗体上,并设置透明度。

void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this); QPixmap pix("://timg.jpg"); QPixmap scalePix = pix.scaled(this->width(), this->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); painter.setOpacity(0.4); painter.drawPixmap(0, 0, scalePix); }

注:若设置背景属性失败,可尝试设置该属性解决,setAttribute(Qt::WA_StyledBackground);。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有