diff options
Diffstat (limited to 'examples/widgets/graphicsview/diagramscene/arrow.cpp')
-rw-r--r-- | examples/widgets/graphicsview/diagramscene/arrow.cpp | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/examples/widgets/graphicsview/diagramscene/arrow.cpp b/examples/widgets/graphicsview/diagramscene/arrow.cpp index 88160d9399..9b2472bb33 100644 --- a/examples/widgets/graphicsview/diagramscene/arrow.cpp +++ b/examples/widgets/graphicsview/diagramscene/arrow.cpp @@ -50,19 +50,17 @@ #include "arrow.h" +#include "diagramitem.h" -#include <qmath.h> -#include <QPen> #include <QPainter> +#include <QPen> +#include <QtMath> //! [0] Arrow::Arrow(DiagramItem *startItem, DiagramItem *endItem, QGraphicsItem *parent) - : QGraphicsLineItem(parent) + : QGraphicsLineItem(parent), myStartItem(startItem), myEndItem(endItem) { - myStartItem = startItem; - myEndItem = endItem; setFlag(QGraphicsItem::ItemIsSelectable, true); - myColor = Qt::black; setPen(QPen(myColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); } //! [0] @@ -98,7 +96,7 @@ void Arrow::updatePosition() //! [4] void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, - QWidget *) + QWidget *) { if (myStartItem->collidesWithItem(myEndItem)) return; @@ -113,15 +111,13 @@ void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QLineF centerLine(myStartItem->pos(), myEndItem->pos()); QPolygonF endPolygon = myEndItem->polygon(); QPointF p1 = endPolygon.first() + myEndItem->pos(); - QPointF p2; QPointF intersectPoint; - QLineF polyLine; for (int i = 1; i < endPolygon.count(); ++i) { - p2 = endPolygon.at(i) + myEndItem->pos(); - polyLine = QLineF(p1, p2); - QLineF::IntersectType intersectType = - polyLine.intersect(centerLine, &intersectPoint); - if (intersectType == QLineF::BoundedIntersection) + QPointF p2 = endPolygon.at(i) + myEndItem->pos(); + QLineF polyLine = QLineF(p1, p2); + QLineF::IntersectionType intersectionType = + polyLine.intersects(centerLine, &intersectPoint); + if (intersectionType == QLineF::BoundedIntersection) break; p1 = p2; } |