问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Qt实现无边框圆角窗口

创作时间:
作者:
@小白创作中心

Qt实现无边框圆角窗口

引用
CSDN
1.
https://blog.csdn.net/qq_45526401/article/details/137234185

在Qt开发中,有时我们需要创建一个没有标题栏且具有圆角边框的窗口。本文将介绍如何通过Qt的API和样式表(QSS)实现这一效果。

去除标题栏

首先,我们需要去除窗口的默认标题栏。这可以通过设置窗口标志位来实现:

this->setWindowFlags(Qt::FramelessWindowHint);

设置圆角边框样式

接下来,我们使用QSS(Qt Style Sheets)来设置窗口的圆角边框样式:

QDialog{
    border-radius:30;
    background-color:rgb(204,204,204);
    border:1px solid gray;
}

处理背景透明问题

在Windows 11下,仅设置圆角可能不会生效。为了解决这个问题,我们需要将窗口背景设置为透明:

//设置透明
this->setAttribute(Qt::WA_TranslucentBackground, true);

但是,这会导致窗口完全不可见。为了解决这个问题,我们可以使用另一个QWidget覆盖在QDialog窗口上,并为这个QWidget设置圆角和背景色。

最终,我们就可以实现一个无边框且具有圆角的窗口。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号