#pragma once #include "Common.h" #include "ui_DialogPortValue.h" /// /// 双击Port功能块显示的界面,用于绑定接口变量 /// class POU; class DialogPortValue : public QDialog { Q_OBJECT public: DialogPortValue(const TOOL* port, POU* localPou, QWidget *parent = nullptr); ~DialogPortValue(); // 获取用户选择的工具信息 const _INTERFACE* GetSelectedInf() { return selInf; }; private: Ui::DialogPortValue ui; private: // 当前选定的分组 typedef enum class _tagComboSelGroup { SEL_GROUP_GVL, // 选择的是全局变量页面 SEL_GROUP_POU, // 选择的是POU页面 SEL_GROUP_HDW, // 选择的是硬件组态页面 SEL_GROUP_COUNT } SEL_GROUP; Q_ENUM(SEL_GROUP); // 对话框初始化 void initUI(); // 添加兼容的Pou工具到树形结构中 void AddPouToolsToTree(const POU* pPou); // 添加兼容的Pou变量到树形结构中 bool AddPouVariablesToTree(const QString& strGroup); // 添加兼容的硬件工具 void AddHdwToolsToTree(); // 添加兼容的硬件局部变量 void AddHdwVariablesToTree(); // 添加Tool子节点 QTreeWidgetItem* AddToolTreeItem(const QString& toolName); // 添加接口子节点 void AddInterfaceTreeItem(QTreeWidgetItem* pToolItem, const _INTERFACE* pInf); // 添加变量分组子节点 QTreeWidgetItem* AddVariableGroupTreeItem(TOOL_TYPE varType); // 添加变量子节点 void AddVariableTreeItem(QTreeWidgetItem* pToolItem, const VARIABLE* var); private slots: // select按钮 void onButtonSelectClicked(); // Combo框选择变更时,需要切换对应的变量列表 void onComboGroupChanged(int nIndex); // 鼠标双击,直接选定接口 // void mouseDoubleClickEvent(QMouseEvent* event) override; //// 事件过滤器,拦截发往treeTool的双击事件 //bool eventFilter(QObject* target, QEvent* event); private: const TOOL* portInfo; // 本对话框绑定的port工具信息 const _INTERFACE* selInf; // 用户最终选择的接口信息 const GVLS* m_pAllVariables; // 获取全部变量信息 const POU* m_pLocalPou; // 本Port窗口对应的Pou数据 QHash m_ItemInfs; // 每个树节点携带的接口信息 };