#pragma once #include "Common.h" /// /// 在App界面中管理多个窗口的框架 /// class WindowAppPouFrame; class WindowAppMdiSubContainer; class POU; class WindowAppMdiFrame : public QMdiArea { Q_OBJECT Q_ENUM(SUBVIEW_TYPE) public: WindowAppMdiFrame(); ~WindowAppMdiFrame(); public: // 添加对应的的子窗体 QWidget* addSubView(QString strTitle, SUBVIEW_TYPE viewType, bool bActive = false); // 2022-2-16 添加Gvl子窗体(由于GVL窗体参数增加,额外独立出来了) QWidget* addGvlSubView(QString strTitle, GVL_MODE gvlType, DllTool* pHdwTool, bool bActive = false); // 激活对应的子窗体(按名称) void activeSubView(QString strTitle); // 删除指定的子窗体(按名称) void deleteSubView(QString strTitle); // 删除所有子窗体 void deleteAllSubViews(); // 根据名字查找对应的子窗体 QWidget* findSubView(QString strNewName); private slots: // 自动缩放 void resizeEvent(QResizeEvent* resizeEvent) override; // 当子窗口关闭时触发 void onSubWindowClosed(WindowAppMdiSubContainer*); // 2022-9-21,当子窗口激活时触发 void onSubWindowActivated(WindowAppMdiSubContainer*); // void setActiveSubWindow(QMdiSubWindow* window); private: // 初始化UI void initUI(); // 调整子窗体大小 void AjustSubWindowGeometry(QWidget* pView, WindowAppMdiSubContainer* pContainer); private: // 当前界面中的Container和View的对应关系 QHash m_containerToViews; // 当前界面中的Name和Container的对应关系(仅打开窗口) QHash m_nameToContainers; QMap m_liveContainers; };