QtNovelUI/libSplitView/splitpanel.h

55 lines
1.8 KiB
C++

#ifndef SPLITPANEL
#define SPLITPANEL
#include "splitwindow.h"
namespace split_panel {
/**
* @brief 分割视图
*/
class SPLITVIEW_EXPORT SplitPanel : public QWidget, public split_frame::SplitView {
typedef float split_pos;
typedef float split_width;
public:
SplitPanel(split_frame::ViewBase *first, split_frame::ViewBase *next, ViewRes *parent);
virtual ~SplitPanel();
// ViewRes interface
public:
virtual split_frame::ResManager *splitManager() const override;
virtual ViewRes *parentRes() const override;
virtual bool canRetrieve() const override;
virtual bool canClose() const override;
virtual bool canReplace() const override;
// ViewBase interface
public:
virtual QIcon icon() const override;
virtual QString title() const override;
virtual QWidget* widget() const override;
virtual QSizeF viewSize() const override;
virtual void resizeView(const QSizeF &outline) override;
// SplitView interface
public:
virtual std::tuple<split_frame::ViewBase *, split_frame::ViewBase *, split_frame::SplitType> child() const override;
virtual void replaceComp(ViewBase *view, ViewBase *old) override;
virtual float splitterWidth() const override;
virtual float splitterPos() const override;
virtual void setSplitInfo(split_frame::SplitType type, float pos, float width) override;
private:
ViewRes *parent_inst;
std::tuple<split_frame::ViewBase*, split_frame::ViewBase*> split_member;
// type, pos, width
std::tuple<split_frame::SplitType, split_pos, split_width> split_info_value;
QList<split_frame::ViewBase*> view_list() const;
};
} // namespace SplitFrame
#endif // SPLITPANEL