#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;
};