-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmy_diagram_arrow.h
57 lines (50 loc) · 1.91 KB
/
my_diagram_arrow.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef MY_DIAGRAM_ARROW_H
#define MY_DIAGRAM_ARROW_H
#include <QGraphicsLineItem>
#include "my_diagram_item.h"
QT_BEGIN_NAMESPACE
class QGraphicsPolygonItem;
class QGraphicsLineItem;
class QGraphicsScene;
class QRectF;
class QGraphicsSceneMouseEvent;
class QPainterPath;
QT_END_NAMESPACE
class My_diagram_arrow : public QGraphicsLineItem
{
public:
enum { Type = UserType + 4 };
enum ArrowType { Dependency=0, Association, Aggregation, Composition, Generalization, Include, Extend, Transaction};
// Çàâèñèìîñòü (ëèíèÿ ïóíêòèð íà êîíöå ñòðåëêà),
// Àññîöèàöèÿ (Ñïëîøíàÿ ëèíèÿ),
// Àãðåãàöèÿ (Ëèíèÿ ñ ïóñòûì ðîìáîì, êîòîðûé íàõîäèòñÿ áëèæå ê êëàññó êîòîðûé ÿâëÿåòñÿ öåëûì,
// ò.å. êîòîðûé âìåùàåò â ñåáÿ âñå òå àãðèãóåìûå ÷àñòè)
// Êîìïîçèöèÿ (÷àñòíûé ñëó÷àé àãðåãàöèè òîëüêî åãî ÷àñòè íå ÿâëÿþòñÿ ñàìîñòîÿòåëüíûìè ïðîãðàììàìè ÇÀÊÐÀØÅÍÍÛÉ ÐÎÌÁ)
// Îáîáùåíèå Ñïëîøíàÿ ëèíèÿ ñ Ïóñòîé ñòðåëêîé
My_diagram_arrow(ArrowType arrowType = Dependency,My_diagram_item *startItem = 0, My_diagram_item *endItem = 0,QGraphicsItem *parent = 0, QGraphicsScene *scene = 0);
int type() const
{ return Type; }
QRectF boundingRect() const;
QPainterPath shape() const;
void setColor(const QColor &color)
{ myColor = color; }
My_diagram_item *startItem() const
{ return myStartItem; }
My_diagram_item *endItem() const
{ return myEndItem; }
int getArrowType () const
{ return myArrowType; }
public slots:
void updatePosition();
protected:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget = 0);
private:
ArrowType myArrowType;
My_diagram_item *myStartItem;
My_diagram_item *myEndItem;
QColor myColor;
QPolygonF arrowHead;
};
QDataStream &operator<<(QDataStream &out, const My_diagram_arrow &boxItem);
QDataStream &operator>>(QDataStream &in, My_diagram_arrow* boxItem);
#endif // MY_DIAGRAM_ARROW_H