WindowAppBlockComment.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #pragma once
  2. #include "WindowAppBlockBase.h"
  3. class WindowAppBlockComment : public WindowAppBlockBase
  4. {
  5. Q_OBJECT
  6. public:
  7. WindowAppBlockComment(
  8. TOOL* pNewTool,
  9. POU* Pou,
  10. bool bShowOnly = false,
  11. QGraphicsObject* parent = nullptr
  12. );
  13. ~WindowAppBlockComment();
  14. //// 设置注释的文字
  15. //void setComment(const QString& strComm);
  16. // 设定本Item的自定义类型
  17. enum { Type = ITEM_TYPE_COMMENT };
  18. int type() const override
  19. {
  20. return Type;
  21. }
  22. // 获取注释控件的文字内容
  23. QString content()
  24. {
  25. // 把Tool中的Info字段用来做Comment的注释
  26. return this->m_toolInfo->strInfo;
  27. }
  28. // 添加接口(虚函数,注释工具不需要添加接口)
  29. virtual void addItemInterfaces() {};
  30. protected slots:
  31. // 绘制注释控件边框
  32. void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override;
  33. // 响应双击事件,弹出编辑内容对话框
  34. void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event);
  35. // 计算区域边界
  36. QRectF boundingRect() const override;
  37. // 鼠标悬浮事件(用于显示拉伸用的鼠标)
  38. void hoverMoveEvent(QGraphicsSceneHoverEvent* event) override;
  39. // 鼠标按下事件(用于触发控件拉伸)
  40. void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
  41. // 鼠标移动事件(用于拉伸控件)
  42. void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
  43. // 鼠标释放事件(用于鼠标还原以及接收拉伸状态)
  44. void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
  45. // 菜单 - Delete
  46. void onMenuDelete();
  47. signals:
  48. // 内容为空信号,如果内容为空,则删除本注释控件
  49. void emptyContent(WindowAppBlockComment* item);
  50. protected:
  51. // 初始化UI风格
  52. void initStyle();
  53. // 绘制边框
  54. void drawFrame(QPainter* painter);
  55. // 绘制文字
  56. void drawContent(QPainter* painter);
  57. // 更新矩形区域的尺寸
  58. void updateRect();
  59. // 刷新全部(包括文字和尺寸)
  60. void updateAll();
  61. // 初始化功能块的右键菜单
  62. void createContextMenu();
  63. protected:
  64. // 控件的拉伸方向
  65. enum ResizeDirection
  66. {
  67. ResizeNone = 0,
  68. ResizeLeft = 1,
  69. ResizeRight = 2,
  70. ResizeTop = 4,
  71. ResizeBottom = 8,
  72. AllDirections = 15,
  73. };
  74. // 当前拉伸的方向
  75. quint32 reDirection;
  76. // 是否处于拉伸状态中
  77. bool isResizing;
  78. };