#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)
};