DiagramDesigner/diagramCavas/include/diagramEditor/editItems.h

98 lines
2.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef EDITITEMS_H
#define EDITITEMS_H
//组态过程中的item
#include <QGraphicsWidget>
#include <QPointer>
#include "global.h"
class DiagramEditorBaseBlock;
class EditBaseItem : public QGraphicsWidget
{
Q_OBJECT
public:
EditBaseItem(QGraphicsItem *parent = nullptr);
virtual ~EditBaseItem();
virtual void setName(const QString& s){sName = s;}
virtual QString getName(){return sName;}
virtual void setType(EditorItemType tpe) {nType = tpe;}
virtual EditorItemType getType(){return nType;}
virtual void setBoundingRect(QRectF rec) {m_boundingRect = rec;}
virtual QRectF boundingRect() const {return m_boundingRect;}
virtual void setBlockData(QPointer<DiagramEditorBaseBlock> p){_pBlock = p;}
virtual QPointer<DiagramEditorBaseBlock> getBlockData(){return _pBlock;}
signals:
void itemDbClicked(QPointer<DiagramEditorBaseBlock>);
protected:
virtual QPainterPath shape();
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
protected:
QString sName;
EditorItemType nType;
QRectF m_boundingRect;
QPointer<DiagramEditorBaseBlock> _pBlock;
};
/********************bus*********************/
class EditBusItem: public EditBaseItem
{
Q_OBJECT
public:
EditBusItem(QGraphicsItem *parent = nullptr);
virtual ~EditBusItem();
virtual void setGeometry(const QRectF &rect) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
};
/********************bay*********************/
class EditBayItem: public EditBaseItem
{
Q_OBJECT
public:
EditBayItem(QGraphicsItem *parent = nullptr);
virtual ~EditBayItem();
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
};
/********************trans*********************/
class EditTransItem: public EditBaseItem
{
Q_OBJECT
public:
EditTransItem(QGraphicsItem *parent = nullptr);
virtual ~EditTransItem();
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
};
/********************连线*********************/
class EditLineItem : public EditBaseItem
{
public:
EditLineItem(QGraphicsItem *parent = nullptr);
virtual ~EditLineItem();
void setStartPoint(const QPointF& p);
void setEndPoint(const QPointF& p);
QPainterPath getPoints(void) const { return m_points; }
void calculatePath(int nSeg = 2); //划分段数2段3段
void resetCurLine(){_curLine = QPoint();}
protected:
virtual QPainterPath shape() const override;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
QPainterPath m_points;
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
QList<QPointF> m_lstPoints;
QPoint _curLine; //参数1用点序号表示的当前线段起始点,参数2表示线段方向
};
#endif