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
无效了。所以得寻求其他方式做了。觉得比较像的就是渐变效果了。
实现原理:
- 对窗口元素在Qt designer的Layout属性设置四个方向的margin值。
- 对窗口元素设置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
属性设置