美文网首页
qt窗口边框阴影效果

qt窗口边框阴影效果

作者: celineWong7 | 来源:发表于2024-09-28 17:30 被阅读0次

Qt是真真真的小白,实现有很多不周到/曲折/啼笑皆非的地方,
此处用来备忘,瞎折腾实现的效果。

一、需求

要求对之前qt开发的一个窗口加阴影。
如果是web开发的话,一个css属性解决:

box-shadow:0px 4px 12px rgba(0,0,0,0.1);

但是,qt desinger 设置qss的这个属性不生效。。

二、遇到问题

1. 背景无法透明

无论我在qss中,怎么对根元素和子元素设置 background-color:transparent; 就是不生效。
后来无意间,搜索到了如下语句,把它写在cpp里面,就可以了。

setAttribute(Qt::WA_TranslucentBackground);

2. 制作阴影效果

因为box-shadow无效了。所以得寻求其他方式做了。觉得比较像的就是渐变效果了。

实现原理:

  1. 对窗口元素在Qt designer的Layout属性设置四个方向的margin值。
  2. 对窗口元素设置border属性
/* 设置边框 */
border: 12px solid rgba(0,0,0,0); 
/* 对各个边框设置渐变,因为每个边框的渐变方向不一样,所以要分开设置 */
border-top-color: qlineargradient(x1:1, y1:1, x2:1, y2:0, stop: 0 rgba(63,63,63,30), stop: 1 rgba(63,63,63,0));
.../*以此类推,设置另外三个方向*/

qlineargradient的属性设置详见这篇文章:Qt 的线性渐变的类QLinearGradient 学习笔记 https://blog.csdn.net/xulibo5828/article/details/140852277

属性设置

相关文章

网友评论

      本文标题:qt窗口边框阴影效果

      本文链接:https://www.haomeiwen.com/subject/ezqrrjtx.html