1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #pragma once
- #include "Common.h"
- /// <summary>
- /// 在App界面中管理多个窗口的框架
- /// </summary>
- 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<WindowAppMdiSubContainer*, QWidget*> m_containerToViews;
- // 当前界面中的Name和Container的对应关系(仅打开窗口)
- QHash<QString, WindowAppMdiSubContainer*> m_nameToContainers;
- QMap<QString, WindowAppMdiSubContainer*> m_liveContainers;
- };
|