-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmy_diagram_item.h
54 lines (48 loc) · 1.91 KB
/
my_diagram_item.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
#ifndef MY_DIAGRAM_ITEM_H
#define MY_DIAGRAM_ITEM_H
#include <QGraphicsPixmapItem>
#include <QList>
#include <QLineEdit>
#include <QString>
namespace Ui
{
class My_diagram_item;
}
class My_diagram_arrow;
class My_diagram_item : public QGraphicsPolygonItem
{
public:
enum { Type = UserType + 15 };//Ïåðå÷èñëåíèå Type ÿâëÿåòñÿ óíèêàëüíûì èäåíòèôèêàòîðîì êëàññà. Îí èñïîëüçóåòñÿ qgraphicsitem_cast(), êîòîðûé äåëàåò äèíàìè÷åñêîå ïðèâåäåíèå ãðàôè÷åñêèõ ýëåìåíòîâ. Êîíñòàíòà UserType ÿâëÿåòñÿ ìèíèìàëüíûì çíà÷åíèåì, êîòîðûì ìîæåò áûòü ïîëüçîâàòåëüñêèé òèï ãðàôè÷åñêîãî ýëåìåíòà.
enum DiagramType { Class_=0, Interface, Option, State, BeginState, EndState, SyncState, Shallow_history_state, Deep_history_state,Transition,Actor };
My_diagram_item(DiagramType diagramType, QMenu *contextMenu = 0,QGraphicsItem *parent = 0, QGraphicsScene *scene = 0);
void removeArrow(My_diagram_arrow *arrow);
void removeArrows();
DiagramType diagramType() const
{ return myDiagramType; }
QPolygonF polygon() const
{ return myPolygon; }
void addArrow(My_diagram_arrow *arrow);
QPixmap image() const;
int type() const
{ return Type;}
int getTypeElem() const
{
return myDiagramType;
}
QMenu * getMenu () const
{
return myContextMenu;
}
protected:
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
private:
DiagramType myDiagramType;//Òèï ýëåìåòà (Êâàäðàò, ðîìá è ò.ä.)
QPolygonF myPolygon;
QMenu *myContextMenu;
QList<My_diagram_arrow *> arrows;// ñïèñîê ñòðåëîê êîòîðûå ñ íèì ñîåäèíåíû
};
QDataStream &operator<<(QDataStream &out, const My_diagram_item &boxItem);
QDataStream &operator>>(QDataStream &in, My_diagram_item *boxItem);
#endif // MY_DIAGRAM_ITEM_H