DiagramDesigner/diagramCavas/include/diagramEditor/editItems.h

98 lines
2.9 KiB
C
Raw Normal View History

2025-07-31 19:38:06 +08:00
#ifndef EDITITEMS_H
#define EDITITEMS_H
//组态过程中的item
#include <QGraphicsWidget>
#include <QPointer>
2025-07-31 19:38:06 +08:00
#include "global.h"
class DiagramEditorBaseBlock;
class EditBaseItem : public QGraphicsWidget
2025-07-31 19:38:06 +08:00
{
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;}
2025-08-15 18:21:20 +08:00
signals:
void itemDbClicked(QPointer<DiagramEditorBaseBlock>);
2025-07-31 19:38:06 +08:00
protected:
virtual QPainterPath shape();
2025-08-15 18:21:20 +08:00
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
2025-07-31 19:38:06 +08:00
protected:
QString sName;
EditorItemType nType;
QRectF m_boundingRect;
QPointer<DiagramEditorBaseBlock> _pBlock;
2025-07-31 19:38:06 +08:00
};
/********************bus*********************/
class EditBusItem: public EditBaseItem
{
Q_OBJECT
public:
EditBusItem(QGraphicsItem *parent = nullptr);
virtual ~EditBusItem();
virtual void setGeometry(const QRectF &rect) override;
2025-07-31 19:38:06 +08:00
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表示线段方向
};
2025-07-31 19:38:06 +08:00
#endif