2025-07-31 19:38:06 +08:00
|
|
|
|
#ifndef EDITITEMS_H
|
|
|
|
|
|
#define EDITITEMS_H
|
|
|
|
|
|
|
|
|
|
|
|
//组态过程中的item
|
2025-08-06 20:10:10 +08:00
|
|
|
|
#include <QGraphicsWidget>
|
|
|
|
|
|
#include <QPointer>
|
2025-07-31 19:38:06 +08:00
|
|
|
|
#include "global.h"
|
|
|
|
|
|
|
2025-08-06 20:10:10 +08:00
|
|
|
|
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;}
|
2025-08-06 20:10:10 +08:00
|
|
|
|
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;
|
2025-08-06 20:10:10 +08:00
|
|
|
|
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();
|
2025-08-08 17:47:31 +08:00
|
|
|
|
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;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2025-08-08 17:47:31 +08:00
|
|
|
|
/********************连线*********************/
|
|
|
|
|
|
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
|