QGraphicsPolygonItem绘制一个打开(未关闭)的多边形

时间:2011-10-11 14:27:47

标签: c++ qt qgraphicsview

我使用的是QGraphicsPolygonItem,我注意到它总是将端点与起点连接起来。

我知道多边形术语的含义正是如此,而我所寻找的是“折线”或“多边形链”。我在QGraphicsItem子类中没有发现任何类似内容。

如何在QGraphics Framework中绘制多边形链?是否有QGraphicsPolygonItem的属性或者这样做的类?

2 个答案:

答案 0 :(得分:4)

我有类似的问题,我通过使用QGraphicsPathItem类解决了它。在下面的代码中, polygon 是一个非闭合的QPolygonF对象(即起始点与其终点不同的QPolygonF):

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

显示此QGraphicsPathItem对象时,(理论上)起点与其终点断开连接。

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

答案 1 :(得分:3)

您可以使用QPainterPath并使用lineTo方法输入yors折线点,然后使用QGraphicsPathItem将其作为图形项。

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

这是你在找什么?

编辑:

QPainterPath显然是在关闭路径,然后你只剩下一组行。

EDIT2:

很抱歉让您感到困惑,但HostileFork似乎是对的 - 您只需使用QPainterPath并致电pathItem->setBrush(QBrush(Qt::transparent));以保持您的路径未填充。