/** * @brief 抽屉组件对象 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ #ifndef LOCKERWIDGET_H #define LOCKERWIDGET_H #include "FITK_Kernel/FITKCore/FITKAbstractGUI.h" #include "FITKWidgetAPI.h" class QVBoxLayout; class QScrollArea; namespace Comp { class FITKDrawerWidget; class FITKLockerButton; /** * @brief 抽屉组件对象 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ class FITKWidgetAPI FITKLockerWidget :public Core::FITKWidget { Q_OBJECT; public: /** * @brief Construct a new FITKLockerWidget object * @param[i] id 组件ID * @param[i] parent 抽屉控件对象 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ FITKLockerWidget(int id, FITKDrawerWidget* parent = nullptr); /** * @brief Destroy the FITKLockerWidget object * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ ~FITKLockerWidget(); /** * @brief 设置组件标题 * @param[i] text 标题文本 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void setText(const QString& text); /** * @brief 组件中添加业务界面和空白区域 * @param[i] widget 组件界面 * @param[i] isStretch 是否添加空白区域:true-是,false-否 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void addWidget(QWidget* widget, bool isStretch = false); /** * @brief 获取组件ID * @return int 组件ID * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ int getID(); /** * @brief 设置组件的折叠状态 * @param[i] fold true-折叠,false-展开 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void setFoldable(bool fold); /** * @brief 获取组件的折叠状态 * @return true 折叠 * @return false 展开 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ bool getFoldable(); /** * @brief 设置组件在折叠下的图标 * @param[i] pixmap 图标 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void setFoldPixmap(const QPixmap& foldImage); /** * @brief 设置组件在展开下的图标 * @param[i] pixmap 图标 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void setUnFoldPixmap(const QPixmap& unFoldImage); signals: ; /** * @brief 折叠组件信号 * @param[i] id 组件ID * @param[i] fold true-折叠,false-展开 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void foldWidgetSig(int id, bool fold); private: /** * @brief 初始化 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ void initialize(); private: /** * @brief 折叠状态 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ bool m_fold; /** * @brief 组件id * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ int m_id = -1; /** * @brief 折叠图标 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ QPixmap m_foldPixmap; /** * @brief 展开图标 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ QPixmap m_unfoldPixmap; /** * @brief 抽屉组件对象 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ QWidget* m_widget = nullptr; /** * @brief 垂直布局 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ QVBoxLayout* m_widgetLayout = nullptr; /** * @brief 按钮组件 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ FITKLockerButton* m_button = nullptr; /** * @brief 滚动条 * @author BaGuijun (baguijun@163.com) * @date 2024-06-05 */ QScrollArea* m_scrollArea = nullptr; }; } #endif // LOCKERWIDGET_H