确定Qt中线的边界矩形

Kam*_*wal 5 qt line bounding-box qpainter

QPainterPath在两点之间画一条线如下:

QPainterPath line;
line.moveTo(start_p);
line.lineTo(end_p);

QPen paintpen(Qt::black);
paintpen.setWidth(1);
painter->setRenderHint(QPainter::Antialiasing);
painter->setBrush(Qt::SolidPattern);
painter->setPen(paintpen);
painter->drawPath(line);
Run Code Online (Sandbox Code Playgroud)

我已将bounding rect定义为:

QRectF Line::boundingRect() const
{
 return QRectF(start_p.x(), start_p.y(), end_p.x(), end_p.y());
}
Run Code Online (Sandbox Code Playgroud)

我在以下情况下正确画线:

start_p.x() < end_p.x() 
Run Code Online (Sandbox Code Playgroud)

start_p.y() < end_p.y()
Run Code Online (Sandbox Code Playgroud)

如何定义边界矩形,以便无论两点坐标(start_p和end_p)之间的关系如何都能正确绘制直线?

vah*_*cho 7

您可以尝试规范化矩形:

QRectF Line::boundingRect() const
{
    return QRectF(start_p.x(), start_p.y(), end_p.x(), end_p.y()).normalized();
}
Run Code Online (Sandbox Code Playgroud)