|
- #ifndef ITEM_H
- #define ITEM_H
-
- #include <QGraphicsObject>
- #include <QColor>
- #include <QList>
- #include <QAction>
-
- class Connection;
-
- class Item : public QGraphicsObject
- {
- Q_OBJECT
- public:
- enum AnchorType { Left, Right };
- explicit Item(const QString &type, QGraphicsItem *parent = nullptr);
-
- QRectF boundingRect() const override;
- QPointF anchorPos(AnchorType type) const;
- void addConnection(Connection* conn);
- void removeConnection(Connection* conn);
- QList<Connection*> connections();
- QString itemType();
- virtual bool setRegisterId(const QString& id);
- QString registerId() const { return registerId_; }
- virtual void setRegisterValue(const QString& registerId, quint16 value);
- quint16 registerValue() const { return registerValue_; }
- virtual QStringList resetRegister();
-
- virtual void setCompare(QString) {}
-
- // 添加状态属性(用于线圈、触点等)
- virtual bool state() const { return false; }
-
-
- signals:
- void requestCopy(Item*);
- void requestDelete(Item*);
- void requestBindRegister(Item*);
- void requestCompare(Item*);
- void requestReset(Item*);
-
- protected:
- void MenuActions(QMenu *menu);
- virtual void addMenuActions(QMenu *menu);
- virtual void handleMenuAction(QAction *action);
- QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
- void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
- QString type_;
- QList<Connection*> connections_;
- QString registerId_;
- quint16 registerValue_ = 0;
- };
-
- #endif // ITEM_H
|