当前位置:网站首页>QT实现圆角窗口
QT实现圆角窗口
2022-07-06 09:28:00 【Larry_Yanan】
用QT做界面开发的时候,时不时会有一些比较刁难人的样式要求,比如你需要将一个独立窗口,设置成圆角样式。
//UI文件中,对最外层窗口的样式设置
#ChooseUsbCamera{ //类名
background-color: rgb(255, 255, 255); //背景颜色(白色)
border-radius: 10px; //四角圆角的直径
border-style:solid; //边框样式(实线)
border-width:2px; //边框宽度
border-color:rgb(213, 213, 213); //边框颜色
}
这样,就简单做出一个圆角并且带有边框的界面效果,比较的美观。
然而那么问题来了,虽然设置成圆角之后,但四个顶角的透明化无法实现,这自然而然会在窗口初始化的时候加入透明化的代码:
setAttribute(Qt::WA_TranslucentBackground);
但是却变成窗口背景的完全透明化,即便你设置了背景相关的样式
这可能是因为透明化的设置,覆盖掉了我们自定义的样式。这个时候则需要重载paintEvent事件,重新刷图
void ChooseUsbCamera::paintEvent(QPaintEvent *event)
{
QStyleOption opt;
opt.init(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
}
于是,终于实现了这个简单但令人头疼的圆角窗口效果:
可以看到,它的四个角是透明的,实现了圆角的效果。而且还有一点点灰色的边框效果,虽然不是很明显hh。
其实如果你是窗口内的部件,用同样的方法设置样式,或者直接填充带有透明度的图片,是不需要这么麻烦的。但顶层的窗口设置起来往往就不行,研究了半天还走了不少弯路hh,所以特意记录一下。
边栏推荐
- 渗透测试 ( 8 ) --- Burp Suite Pro 官方文档
- Programmers, what are your skills in code writing?
- Gartner: five suggestions on best practices for zero trust network access
- 【高老师UML软件建模基础】20级云班课习题答案合集
- Luogu P1102 A-B number pair (dichotomy, map, double pointer)
- Opencv learning log 28 -- detect the red cup cover
- Opencv learning log 14 - count the number of coins in the picture (regardless of overlap)
- Suffix expression (greed + thinking)
- Vs2019 initial use
- [exercise-6] (PTA) divide and conquer
猜你喜欢

2078. Two houses with different colors and the farthest distance

Sword finger offer II 019 Delete at most one character to get a palindrome

409. Longest palindrome

1689. Ten - the minimum number of binary numbers

Ball Dropping

【高老师UML软件建模基础】20级云班课习题答案合集

树莓派4B安装opencv3.4.0

Penetration test (2) -- penetration test system, target, GoogleHacking, Kali tool

628. Maximum product of three numbers

信息安全-威胁检测引擎-常见规则引擎底座性能比较
随机推荐
Opencv learning log 33 Gaussian mean filtering
Opencv learning log 19 skin grinding
C language must memorize code Encyclopedia
What is the difficulty of programming?
Vs2019 initial use
Determine the Photo Position
【练习-9】Zombie’s Treasure Chest
对iptables进行常规操作
Opencv learning log 32 edge extraction
Programmers, what are your skills in code writing?
[exercise-6] (PTA) divide and conquer
Perform general operations on iptables
1529. Minimum number of suffix flips
Frida hook so layer, protobuf data analysis
Flask框架配置loguru日志庫
树莓派4B64位系统安装miniconda(折腾了几天终于解决)
Openwrt source code generation image
Sword finger offer II 019 Delete at most one character to get a palindrome
605. Planting flowers
Sanic异步框架真的这么强吗?实践中找真理