Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

51 righe
1.4 KiB

  1. #ifndef ITEM_H
  2. #define ITEM_H
  3. #include <QGraphicsObject>
  4. #include <QColor>
  5. #include <QList>
  6. #include <QAction>
  7. class Connection;
  8. class Item : public QGraphicsObject
  9. {
  10. Q_OBJECT
  11. public:
  12. enum AnchorType { Left, Right };
  13. explicit Item(const QString &type, QGraphicsItem *parent = nullptr);
  14. QRectF boundingRect() const override;
  15. QPointF anchorPos(AnchorType type) const;
  16. void addConnection(Connection* conn);
  17. void removeConnection(Connection* conn);
  18. QList<Connection*> connections();
  19. QString itemType();
  20. void setRegisterId(const QString& id) { registerId_ = id; }
  21. QString registerId() const { return registerId_; }
  22. void setRegisterValue(quint16 value);
  23. quint16 registerValue() const { return registerValue_; }
  24. // 添加状态属性(用于线圈、触点等)
  25. virtual bool state() const { return false; }
  26. signals:
  27. void requestCopy(Item*);
  28. void requestDelete(Item*);
  29. void requestBindRegister(Item*);
  30. protected:
  31. virtual void MenuActions(QMenu *menu);
  32. virtual void addMenuActions(QMenu *menu);
  33. virtual void handleMenuAction(QAction *action);
  34. QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
  35. void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
  36. QString type_;
  37. QList<Connection*> connections_;
  38. QString registerId_;
  39. quint16 registerValue_ = 0;
  40. };
  41. #endif // ITEM_H