#pragma once #include "Common.h" /// /// 管理工具箱的树形控件 /// class WindowAppTreeTool : public QTreeWidget { Q_OBJECT public: // Tool的工作模式(Pou模式/还是硬件组态模式) enum class TREETOOL_MODE : short { MODE_POU, MODE_HARDWARE }; //Q_ENUM(TREETOOL_MODE); WindowAppTreeTool(TREETOOL_MODE mode = TREETOOL_MODE::MODE_POU, QTreeWidget* parent = nullptr); ~WindowAppTreeTool(); // 添加所有工具到树形结构中 void initTreeTools(TREETOOL_MODE mode = TREETOOL_MODE::MODE_POU); private: void clear(); // 创建界面布局 void createLayouts(); // 创建节点的右键菜单 void createMenu(); // 添加分类父节点 void AddCateItem(const QString& cateName); // 添加Tool子节点 void AddToolItem(const QString& cateName, const STATIC_TOOL& tool); private slots: // 弹出右键菜单 void popMenu(const QPoint&); // 右键菜单槽函数 void onMenuAdd(QAction* action); void onMenuinfo(QAction* action); // 鼠标按下时获取用户拖拽的节点 void mousePressEvent(QMouseEvent* event) override; private: QMenu* m_menuTool; // Tool节点的右键菜单 // 菜单的Action QAction* actionAdd; // 添加 QAction* actionInfo; // 工具信息 QList m_RootItems; // 各个根节点 QMap m_CateItems; // 分类节点和树结构指针对应表 QMap m_ItemTools; // 每个树节点携带的Tool信息 // WND_TYPE m_ParentType; // 父窗体类型(区分Pou和Hardware) TREETOOL_MODE m_Mode; // 窗体类型(区分Pou和Hardware) };