WindowAppTreeTool.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. #include "Common.h"
  3. /// <summary>
  4. /// 管理工具箱的树形控件
  5. /// </summary>
  6. class WindowAppTreeTool : public QTreeWidget
  7. {
  8. Q_OBJECT
  9. public:
  10. // Tool的工作模式(Pou模式/还是硬件组态模式)
  11. enum class TREETOOL_MODE : short
  12. {
  13. MODE_POU,
  14. MODE_HARDWARE
  15. };
  16. //Q_ENUM(TREETOOL_MODE);
  17. WindowAppTreeTool(TREETOOL_MODE mode = TREETOOL_MODE::MODE_POU, QTreeWidget* parent = nullptr);
  18. ~WindowAppTreeTool();
  19. // 添加所有工具到树形结构中
  20. void initTreeTools(TREETOOL_MODE mode = TREETOOL_MODE::MODE_POU);
  21. private:
  22. void clear();
  23. // 创建界面布局
  24. void createLayouts();
  25. // 创建节点的右键菜单
  26. void createMenu();
  27. // 添加分类父节点
  28. void AddCateItem(const QString& cateName);
  29. // 添加Tool子节点
  30. void AddToolItem(const QString& cateName, const STATIC_TOOL& tool);
  31. private slots:
  32. // 弹出右键菜单
  33. void popMenu(const QPoint&);
  34. // 右键菜单槽函数
  35. void onMenuAdd(QAction* action);
  36. void onMenuinfo(QAction* action);
  37. // 鼠标按下时获取用户拖拽的节点
  38. void mousePressEvent(QMouseEvent* event) override;
  39. private:
  40. QMenu* m_menuTool; // Tool节点的右键菜单
  41. // 菜单的Action
  42. QAction* actionAdd; // 添加
  43. QAction* actionInfo; // 工具信息
  44. QList<QTreeWidgetItem*> m_RootItems; // 各个根节点
  45. QMap<QString, QTreeWidgetItem*> m_CateItems; // 分类节点和树结构指针对应表
  46. QMap<QTreeWidgetItem*, const STATIC_TOOL*> m_ItemTools; // 每个树节点携带的Tool信息
  47. // WND_TYPE m_ParentType; // 父窗体类型(区分Pou和Hardware)
  48. TREETOOL_MODE m_Mode; // 窗体类型(区分Pou和Hardware)
  49. };