DialogPortValue.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #pragma once
  2. #include "Common.h"
  3. #include "ui_DialogPortValue.h"
  4. /// <summary>
  5. /// 双击Port功能块显示的界面,用于绑定接口变量
  6. /// </summary>
  7. class POU;
  8. class DialogPortValue : public QDialog
  9. {
  10. Q_OBJECT
  11. public:
  12. DialogPortValue(const TOOL* port, POU* localPou, QWidget *parent = nullptr);
  13. ~DialogPortValue();
  14. // 获取用户选择的工具信息
  15. const _INTERFACE* GetSelectedInf()
  16. {
  17. return selInf;
  18. };
  19. private:
  20. Ui::DialogPortValue ui;
  21. private:
  22. // 当前选定的分组
  23. typedef enum class _tagComboSelGroup
  24. {
  25. SEL_GROUP_GVL, // 选择的是全局变量页面
  26. SEL_GROUP_POU, // 选择的是POU页面
  27. SEL_GROUP_HDW, // 选择的是硬件组态页面
  28. SEL_GROUP_COUNT
  29. } SEL_GROUP;
  30. Q_ENUM(SEL_GROUP);
  31. // 对话框初始化
  32. void initUI();
  33. // 添加兼容的Pou工具到树形结构中
  34. void AddPouToolsToTree(const POU* pPou);
  35. // 添加兼容的Pou变量到树形结构中
  36. bool AddPouVariablesToTree(const QString& strGroup);
  37. // 添加兼容的硬件工具
  38. void AddHdwToolsToTree();
  39. // 添加兼容的硬件局部变量
  40. void AddHdwVariablesToTree();
  41. // 添加Tool子节点
  42. QTreeWidgetItem* AddToolTreeItem(const QString& toolName);
  43. // 添加接口子节点
  44. void AddInterfaceTreeItem(QTreeWidgetItem* pToolItem, const _INTERFACE* pInf);
  45. // 添加变量分组子节点
  46. QTreeWidgetItem* AddVariableGroupTreeItem(TOOL_TYPE varType);
  47. // 添加变量子节点
  48. void AddVariableTreeItem(QTreeWidgetItem* pToolItem, const VARIABLE* var);
  49. private slots:
  50. // select按钮
  51. void onButtonSelectClicked();
  52. // Combo框选择变更时,需要切换对应的变量列表
  53. void onComboGroupChanged(int nIndex);
  54. // 鼠标双击,直接选定接口
  55. // void mouseDoubleClickEvent(QMouseEvent* event) override;
  56. //// 事件过滤器,拦截发往treeTool的双击事件
  57. //bool eventFilter(QObject* target, QEvent* event);
  58. private:
  59. const TOOL* portInfo; // 本对话框绑定的port工具信息
  60. const _INTERFACE* selInf; // 用户最终选择的接口信息
  61. const GVLS* m_pAllVariables; // 获取全部变量信息
  62. const POU* m_pLocalPou; // 本Port窗口对应的Pou数据
  63. QHash<QTreeWidgetItem*, const _INTERFACE*> m_ItemInfs; // 每个树节点携带的接口信息
  64. };