#ifndef ITEMCONTROLHANDLE_H #define ITEMCONTROLHANDLE_H #include enum HandleType { T_none = 0, T_resize, //调整大小 T_rotate, //旋转 T_editShape, //编辑形状 T_text, //文本 T_lineIn, //入线口 T_lineOut, //出线口 T_lineInOut //双端线 }; enum HandleTag { H_none = 0, H_leftTop, H_top, H_rightTop, H_right, H_rightBottom, H_bottom, H_leftBottom, H_left, //8 H_rotate_leftTop, H_rotate_rightTop, H_rotate_rightBottom, H_rotate_leftBottom, //12 H_edit, H_textCaption = 40, //标题文本 H_textCurrent, //电流 h_textVoltage, //电压 H_connect = 50 //连接操作点从50开始,前面预留 }; enum PortPos { P_top = 0, P_down, P_left, P_right }; const int HNDLE_SIZE = 8; class GraphicsBaseItem; class ItemControlHandle : public QObject,public QGraphicsItem { Q_OBJECT Q_INTERFACES(QGraphicsItem) public: ItemControlHandle(QGraphicsItem *parent); virtual ~ItemControlHandle(); public: virtual int getSize(); virtual void move(double, double); virtual void setText(QString); virtual QString getText() const; void setType(HandleType ht) { m_type = ht; } HandleType getType() { return m_type; } void setTag(int ht) { m_tag = ht; } int getTag() { return m_tag; } void setEnable(bool b){m_enable = b;} bool enable(){return m_enable;} void setIfShow(bool b){m_ifShow = b;} bool ifShow(){return m_ifShow;} GraphicsBaseItem* getParentPtr() const {return _parent;} void setParent(GraphicsBaseItem* p) {_parent = p;} protected: virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*) override; virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*) override; virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; protected: HandleType m_type; int m_tag; bool m_enable; bool m_ifShow; GraphicsBaseItem* _parent; }; #endif