2011-10-11 116 views
5

我正在使用一个QGraphicsPolygonItem,我注意到它始终将终点与起点连接起来。QGraphicsPolygonItem绘制一个开放的(不封闭的)多边形

我知道多边形术语的意思正是这个意思,而我正在寻找的是“折线”或“多边形链”。我在QGraphicsItem子类中没有发现任何东西。

如何在QGraphics框架中绘制多边形链?是否有QGraphicsPolygonItem或类的属性呢?

回答

3

您可以使用QPainterPath并使用lineTo方法输入yors多段线点,然后使用QGraphicsPathItem使其成为图形项目。

或者,您也可以考虑将几个QGraphicsLineItem组合到一个QGraphicsItemGroup中,但这更困难,因为您需要注意将线条对齐在一起。

这是你在找什么?

编辑:

QPainterPath显然闭合路径,那么你就只剩线的组。

EDIT2:

对不起,混淆你,但HostileFork似乎是正确的 - 你只需要使用QPainterPath并调用pathItem->setBrush(QBrush(Qt::transparent));,让您的路径填充。

+0

QPainterPath不会自动关闭路径,因此使用lineTo和moveTo序列可能是最好的方法。你可能因为填充而感到困惑?如果你不想填充,你必须调用'pathItem-> setBrush(QBrush(Qt :: transparent));' – HostileFork

2

我有一个类似的问题,我通过使用QGraphicsPathItem类来解决它。在下面的代码,多边形是非封闭QPolygonF对象(即,开始点一个QPolygonF从其终点不同):

QPainterPath path = new QPainterPath(); 
path.addPolygon(polygon); 
QGraphicsPathItem contour = new QGraphicsPathItem(path); 
contour.setPen(new QPen(QColor.black)); 

当显示此QGraphicsPathItem对象,起始点是(理论上)与其终点断开。

对不起,这个示例代码是在Java中;但机制应该与C++中的相同。