如何使用QPainter::drawPolyLine绘制圆角?

3

目前我正在尝试创建一个自定义容器小部件,使用QGroupBox作为基础,并在绘制事件中绘制新的框架,使用drawPolyLine创建它的一切都很好,但我想用圆角来绘制边框。是否有人知道如何使用drawPolyLine实现带有圆角的边框,还是我需要重写代码来实现它们?


void QPainter::drawRoundedRect(const QRectF& rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode)的意思是什么? - cmannett85
它不是一个完整的矩形,想象一个文件夹隔板的形状。 - Nicholas Smith
由于它是不规则的,您可以使用QPainterPath将简单形状“层叠”在一起,从而创建复杂形状。 - cmannett85
你可以通过设置具有适当 joinStyle() 的 QPen 来实现这一点。 - Dan Milburn
@cbamber85:那是其中一种选择,它只是意味着交换QPen以“擦除”顶部部分。 - Nicholas Smith
@DanMilburn:我也这样认为,但它保持为一个正方形的角落。 - Nicholas Smith
2个回答

3

QPen有一个“端点样式”选项Qt::RoundCap,根据画笔宽度的不同可能会导致圆角。


3

当涉及到自定义灵活的形状时,QPainterPath 是其中最强大的类。例如,您可以使用 QPainterPath::arcTo() 来绘制单个圆角,但绘制整个形状可能需要一些数学计算。

另一个可能性是定义单个形状并使用 intersected()subtracted() 进行合并,正如评论中 cbamber85 已经建议的那样。


啊,我之前没看到过交集方法,那个可能很适合。我本来希望能免费得到圆角,但我会想办法解决的! - Nicholas Smith

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