使用Qt5画家

时间:2017-12-06 17:39:58

标签: c++ qt qt5 qpainter

我正在尝试在边界矩形的边缘绘制一个圆弧。这很重要,因为我希望它随控件一起扩展。但是,当使用boundingRect()作为drawArc()的参数时,这会导致边缘被剪掉。

QBrush brush(QColor("#007430"));
painter->setBrush(brush);
QPen pen;
pen.setStyle(Qt::SolidLine);
float lineWidth1 = 6.0;
pen.setWidthF(lineWidth1);
painter->setPen(pen);
painter->setRenderHint(QPainter::Antialiasing);
painter->drawArc(boundingRect(), 45*16, 270*16);

enter image description here

为了使其正常工作,我必须传入一个矩形,即每边较小的笔宽的1/2。 有没有更直接的方法在QT中执行此操作而无需手动计算/调整?

QRectF arcRect(0 + lineWidth1/2,
               0 + lineWidth1/2,
               boundingRect().width() - lineWidth1,
               boundingRect().height() - lineWidth1);

painter->drawArc(arcRect, 45*16, 270*16);

enter image description here

1 个答案:

答案 0 :(得分:0)

很抱歉给你带来真正的答案,遗憾的是不,没有自动的方式来扩展到Qt5中QPainter的绘图操作的边界框。因此,您必须在每个案例的基础上在自己的代码中计算出来。

从好的方面来说,这个计算并不是很难,通过自己动手,你一定会完全控制这个过程。