1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #pragma once
- #include "Common.h"
- /// <summary>
- /// 管理工具箱的树形控件
- /// </summary>
- 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<QTreeWidgetItem*> m_RootItems; // 各个根节点
- QMap<QString, QTreeWidgetItem*> m_CateItems; // 分类节点和树结构指针对应表
- QMap<QTreeWidgetItem*, const STATIC_TOOL*> m_ItemTools; // 每个树节点携带的Tool信息
- // WND_TYPE m_ParentType; // 父窗体类型(区分Pou和Hardware)
- TREETOOL_MODE m_Mode; // 窗体类型(区分Pou和Hardware)
- };
|