WindowAppMdiFrame.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #include "Common.h"
  3. /// <summary>
  4. /// 在App界面中管理多个窗口的框架
  5. /// </summary>
  6. class WindowAppPouFrame;
  7. class WindowAppMdiSubContainer;
  8. class POU;
  9. class WindowAppMdiFrame : public QMdiArea
  10. {
  11. Q_OBJECT
  12. Q_ENUM(SUBVIEW_TYPE)
  13. public:
  14. WindowAppMdiFrame();
  15. ~WindowAppMdiFrame();
  16. public:
  17. // 添加对应的的子窗体
  18. QWidget* addSubView(QString strTitle, SUBVIEW_TYPE viewType, bool bActive = false);
  19. // 2022-2-16 添加Gvl子窗体(由于GVL窗体参数增加,额外独立出来了)
  20. QWidget* addGvlSubView(QString strTitle, GVL_MODE gvlType, DllTool* pHdwTool, bool bActive = false);
  21. // 激活对应的子窗体(按名称)
  22. void activeSubView(QString strTitle);
  23. // 删除指定的子窗体(按名称)
  24. void deleteSubView(QString strTitle);
  25. // 删除所有子窗体
  26. void deleteAllSubViews();
  27. // 根据名字查找对应的子窗体
  28. QWidget* findSubView(QString strNewName);
  29. private slots:
  30. // 自动缩放
  31. void resizeEvent(QResizeEvent* resizeEvent) override;
  32. // 当子窗口关闭时触发
  33. void onSubWindowClosed(WindowAppMdiSubContainer*);
  34. // 2022-9-21,当子窗口激活时触发
  35. void onSubWindowActivated(WindowAppMdiSubContainer*);
  36. // void setActiveSubWindow(QMdiSubWindow* window);
  37. private:
  38. // 初始化UI
  39. void initUI();
  40. // 调整子窗体大小
  41. void AjustSubWindowGeometry(QWidget* pView, WindowAppMdiSubContainer* pContainer);
  42. private:
  43. // 当前界面中的Container和View的对应关系
  44. QHash<WindowAppMdiSubContainer*, QWidget*> m_containerToViews;
  45. // 当前界面中的Name和Container的对应关系(仅打开窗口)
  46. QHash<QString, WindowAppMdiSubContainer*> m_nameToContainers;
  47. QMap<QString, WindowAppMdiSubContainer*> m_liveContainers;
  48. };