#ifndef SPLITPANEL #define SPLITPANEL #include "splitwindow.h" #include namespace split_panel { class DragSplitter : public QFrame{ Q_OBJECT signals: void adjustRequest(QPoint); public: DragSplitter(split_frame::SplitType split, split_frame::ViewRes *parent); // QWidget interface protected: virtual void mouseMoveEvent(QMouseEvent *event) override; }; /** * @brief 分割视图 */ class SPLITVIEW_EXPORT SplitPanel : public QWidget, public split_frame::SplitView, public split_frame::ViewBase, public split_frame::ViewRes { typedef float split_pos; typedef float split_width; private: split_frame::ResManager *const manager_inst; ViewRes *parent_inst; std::tuple split_member; // type, pos, width std::tuple split_info_value; QList view_list() const; public: SplitPanel(split_frame::ResManager *mgr, ViewBase *a, ViewBase *b, split_frame::SplitType split, ViewRes *parent); virtual ~SplitPanel(); // ViewRes interface public: virtual split_frame::ResManager *splitManager() const override; virtual split_frame::SplitView *parentRes() const override; virtual void setParentRes(SplitView *inst) override; virtual bool canRetrieve() const override; virtual bool canClose() const override; virtual bool canReplace() const override; virtual qulonglong hashCode() const override; // ViewBase interface public: virtual QIcon icon() const override; virtual QString title() const override; virtual QWidget* widget() const override; virtual QSizeF stiffSize() const override; virtual QSizeF viewSize() const override; virtual void resizeView(const QSizeF &outline) override; // SplitView interface public: virtual std::tuple 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; }; } // namespace SplitFrame #endif // SPLITPANEL