您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

56 行
1.5 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. virtual bool setRegisterId(const QString& id);
  21. QString registerId() const { return registerId_; }
  22. virtual void setRegisterValue(const QString& registerId, quint16 value);
  23. quint16 registerValue() const { return registerValue_; }
  24. virtual QStringList resetRegister();
  25. virtual void setCompare(QString) {}
  26. // 添加状态属性(用于线圈、触点等)
  27. virtual bool state() const { return false; }
  28. signals:
  29. void requestCopy(Item*);
  30. void requestDelete(Item*);
  31. void requestBindRegister(Item*);
  32. void requestCompare(Item*);
  33. void requestReset(Item*);
  34. protected:
  35. void MenuActions(QMenu *menu);
  36. virtual void addMenuActions(QMenu *menu);
  37. virtual void handleMenuAction(QAction *action);
  38. QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
  39. void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
  40. QString type_;
  41. QList<Connection*> connections_;
  42. QString registerId_;
  43. quint16 registerValue_ = 0;
  44. };
  45. #endif // ITEM_H