当前位置: 首页> 文旅> 文化 > 河南省招标投标信息网官网_小企业网站建设在哪能看_bt磁力猫_广东网络优化推广

河南省招标投标信息网官网_小企业网站建设在哪能看_bt磁力猫_广东网络优化推广

时间:2025/7/12 14:01:09来源:https://blog.csdn.net/qianniulaoren/article/details/144516290 浏览次数:0次
河南省招标投标信息网官网_小企业网站建设在哪能看_bt磁力猫_广东网络优化推广

QT中的比如QWidget,QLabel,QPushbutton,QCheckBox都可以设置阴影效果,就像这样:
在这里插入图片描述
以QWidget为例,开始尝试使用样式表的形式添加阴影,但没有效果,写法如下:

QWidget#widget1::shadow{color: rgba(220, 220, 220,1);radius:10px;offset: 5px;
}

后来查阅资料,说是要先设置背景阴影才能生效,于是样式表改为:

QWidget#widget1{
//背景色background-color: rgba(255, 255, 255,1);//边线border: 1px solid rgba(220, 220, 220,1);//边线倒圆角border-radius:10px;
}
QWidget#widget1::shadow{color: rgba(220, 220, 220,1);radius:10px;offset: 5px;
}

依然无法生效,判断是样式表的形式是不行的,改为使用代码形式设置。
代码设置阴影,一般选用“QGraphicsDropShadowEffect”类来实现。
先添加该类头文件;
再创建一个阴影样式,并设置部件的阴影;

    //设置阴影特效//创建特效对象QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(this);//设置偏移量,x轴,y轴shadow_effect->setOffset(2, 2);//设置阴影颜色和透明度shadow_effect->setColor(QColor(125, 125, 125, 200));//设置阴影外射的尺寸shadow_effect->setBlurRadius(8);//给部件设置阴影ui->widget1->setGraphicsEffect(shadow_effect);

这样就可以让QWidget有一个阴影效果;

同样的,对QPushbutton按钮设置一个阴影效果:

QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(this);shadowEffect->setBlurRadius(15.0);shadowEffect->setColor(Qt::black);shadowEffect->setOffset(5.0, 5.0);ui->btn2->setGraphicsEffect(shadow_effect);

再对QCheckBox设置一个阴影效果

QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect(this);shadowEffect->setBlurRadius(5);shadowEffect->setXOffset(2);shadowEffect->setYOffset(2);ui->checkBox->setGraphicsEffect(shadowEffect);

在这里插入图片描述
嵌入式设备,拍照来的,两个按钮,上面的有阴影,下面的没有。
注意,有时候你代码设置了阴影效果,但可能会出现不生效的问题。
这时候注意检查:
1.有没有给该部件设置一个背景色,想要阴影效果,需要部件本身有一个可见的背景色的;
2.检查是不是运行程序所处的环境,Qt的库不支持图形效果;
3.检查控件的QWidget::setWindowFlags方法可能被调用,设置了不支持阴影的窗口标记;
4.检查控件是不是可能被嵌入到不支持图形效果的容器中,这个我就遇到过,在同样的一个嵌入式设备中,开始产品主程序设置了阴影效果不生效,以为是缺少了什么渲染的库,后来做个简单demo去测试,阴影效果正常,最后发现产品主程序要设置阴影的部件,嵌入到另一个部件中,层层嵌入和一堆的父窗口设置导致不生效;
最后:阴影效果的渲染如果过多,对于一些配置较低的嵌入式设备,可能回引起卡顿。

关键字:河南省招标投标信息网官网_小企业网站建设在哪能看_bt磁力猫_广东网络优化推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: