/** * @file PanelWidgetBase.h * @brief 主窗口子面板子类 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ #ifndef __PANELWIDGETBASE_H__ #define __PANELWIDGETBASE_H__ #include "GUIFrameAPI.h" #include #include class QLabel; class QVBoxLayout; namespace GUI { class MainWindow; /** * @brief 主窗口子面板子类 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ class GUIFRAMEAPI PanelWidgetBase : public QWidget { Q_OBJECT public: /** * @brief 构造函数 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ explicit PanelWidgetBase(MainWindow *mainWindow); /** * @brief 析构函数 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ virtual ~PanelWidgetBase() = 0; /** * @brief 设置子面板标题 * @param title 标题 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ void setTitle(QString title); /** * @brief 获取子面板标题 * @return 子面板标题 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ QString getTitle() const; /** * @brief 设置面板窗口标题的高度(默认值50) * @param height 高度值 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ void setTitleHeight(int height = 50); /** * @brief 设置子部件的显示部件 * @param widget 显示部件 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ void setWidget(QWidget *widget); /** * @brief 移除显示的子部件 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ void removeWidget(); /** * @brief 获取当前界面 * @param widget 显示部件 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ QWidget* getCurrentWidget(); protected: /** * @brief 主窗口对象 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ MainWindow *m_MainWindow{}; /** * @brief 面板窗口的标题Label * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ QLabel *m_TitleLabel{}; /** * @brief 面板窗口的布局 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ QVBoxLayout *m_Layout{}; /** * @brief 面板窗口显示的内容部件 * @author YanZhiHui (chanyuantiandao@126.com) * @date 2024-06-11 */ QWidget* m_Widget{}; }; } #endif // !__PANELWIDGETBASE_H__