【问题标题】:How to draw rounded corners with QPainter::drawPolyLine如何使用 QPainter::drawPolyLine 绘制圆角
【发布时间】:2012-06-12 14:09:45
【问题描述】:

我目前正在尝试使用 QGroupBox 作为基础创建一个自定义容器小部件,并在绘制事件中绘制新框架,使用 drawPolyLine 创建它一切正常,但我想绘制圆角的框架。有没有人遇到过使用 drawPolyLine 的方法,或者我需要重写我的代码来实现它们吗?

【问题讨论】:

  • void QPainter::drawRoundedRect(const QRectF& rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode)?
  • 它不是一个完整的矩形,想象一下形状的活页夹分隔线。
  • 因为它是不规则的,您可以通过使用QPainterPath 将简单的形状“分层”来创建复杂的形状。
  • 您应该能够通过使用适当的 joinStyle() 设置 QPen 来做到这一点。
  • @cbamber85:这是选项之一,它只是意味着交换 QPen 以“擦除”顶部。

标签: qt qpainter


【解决方案1】:

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

另一种可能性是定义单个形状并使用intersected()subtracted() 合并它们,正如 cbamber85 在 cmets 中所建议的那样。

【讨论】:

  • 啊,我还没有看到相交的方法,这可能会很好。我希望我可以免费获得圆角,但我会解决它!
【解决方案2】:

QPen 有一个 Qt::RoundCap 的“Cap Style”选项,它可能会根据笔的宽度产生圆角。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2017-09-12
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多