WindowAppBlockParallel.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include "WindowAppBlockStandardBase.h"
  3. // Parallel工具的接口序号
  4. #define PARALL_START_INF_INDX 0
  5. #define PARALL_END_INF_INDX 1
  6. /// <summary>
  7. /// 并行计算功能块的封装
  8. /// </summary>
  9. class WindowAppBlockParallel : public WindowAppBlockStandardBase
  10. {
  11. Q_OBJECT
  12. Q_INTERFACES(QGraphicsItem)
  13. public:
  14. WindowAppBlockParallel(TOOL* pNewTool, POU* Pou, bool bShowOnly = false, QGraphicsObject* parent = nullptr);
  15. ~WindowAppBlockParallel();
  16. // 设定本Item的自定义类型
  17. enum { Type = ITEM_TYPE_PARALLEL };
  18. int type() const
  19. {
  20. // 针对该 item 启用 qgraphicsitem_cast
  21. return Type;
  22. }
  23. // 添加接口(Parallel工具需要额外添加ToolInterface接口)
  24. virtual void addItemInterfaces();
  25. // 更新本功能块并行母线的位置
  26. void updateParallelLine();
  27. //// 根据移动功能块的Link更新并行母线的位置(Parallel功能块的输出接口)
  28. //void updateParallelLine(int refLineX);
  29. protected slots:
  30. // 绘制并行控件
  31. void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
  32. // 功能块有变动时
  33. QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
  34. protected:
  35. // 绘制边框
  36. void drawFrame(QPainter* painter);
  37. // 更新矩形区域的尺寸
  38. virtual void updateRect();
  39. protected:
  40. // 并行母线的Item
  41. WindowAppItemInterface* m_ParallelLineItem;
  42. };