class Point : public QGraphicsItem
{
public:
Point(const QPointF & p = QPointF(0,0), int pos = 0);
void setIn(Line *e) { in = e; }
void setOut(Line *e) { out = e; }
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget);
private:
Line * in, * out;
int Position;
};
Point::Point(const QPointF & p, int pos) :
in(nullptr),out(nullptr)
{
setFlags(ItemIsMovable | ItemIsSelectable | ItemIgnoresTransformations | ItemSendsGeometryChanges);
setCursor(Qt::PointingHandCursor);
setZValue(pos);
setPos(p);
Position = pos;
}
QVariant Point::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if(change == ItemPositionHasChanged && scene()) {
if(in)
in->adjust();
if(out)
out->adjust();
}
return QGraphicsItem::itemChange(change, value);
}
QRectF WayPoint::boundingRect() const
{
return QRectF( -5, -5 ,10 ,10);
}
void WayPoint::paint(QPainter *painter, const QStyleOptionGraphicsItem */*option*/, QWidget */*widget*/)
{
painter->drawEllipse(QRectF(-5, -5, 10,10));
}