Qt - 创建平滑的圆角小部件

9

我尝试使用以下方法创建一个平滑的小部件圆角:

  1. 创建一个带有 Qt::Window | Qt::FramelessWindowHintQt::WA_TranslucentBackground 标志的小部件;
  2. 在小部件内创建一个 QFrame
  3. QFrame 设置样式表,例如:
border: 1px solid red;
border-radius: 20px;
background-color: black;

我能够达到平滑圆角的效果,但是这个小部件是“window”类型的,所以我无法根据其他小部件来定位它。我们能否在不将小部件设置为“window”类型的情况下实现小部件的完全透明度?

2个回答

14

你的问题不太清楚。听起来你想要添加一个小部件到布局中。如果你想要一个带圆角的小部件,只需使用QFrame并为其设置样式表:

myFrame->setStyleSheet(".QFrame{background-color: red; border: 1px solid black; border-radius: 10px;}");

不需要创建包含 QFrame 的小部件,直接使用 QFrame 即可。


我也尝试直接使用QFrame,将我的主窗口小部件设置为这个圆形QFrame的父级。我看到我的圆形QFrame在一个灰色矩形内,其宽度和高度等于此圆形框架。我甚至尝试为Base和Background设置透明调色板,但它没有起作用。 - parveen arora
@parveenarora,您能否在问题中发布一张您得到的结果和您想要实现的结果的图片吗? - thuga

0
如果我理解你的问题正确 - 那么你可以使用 QGraphicsOpacityEffect 类来处理任何“非窗口”小部件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接