#ifndef SPLITPANEL #define SPLITPANEL #include "SplitWindow.h" #include namespace split_panel { /** * @brief 分割边栏 */ class SPLITVIEW_EXPORT DragSplitter : public QFrame{ Q_OBJECT signals: void adjustRequest(const 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 { typedef float split_pos; typedef float split_width; private: split_frame::ResManager *const manager_inst; SplitView *parent_inst; DragSplitter *const splitter_inst; std::pair split_member; // type, pos, width std::tuple split_info; void sync_status(); void splitter_adjust(const QPoint &pos); public: SplitPanel(split_frame::ResManager *mgr,split_frame::SplitType split); virtual ~SplitPanel(); protected: void resizeEvent(QResizeEvent *e) override; // ViewRes interface public: virtual split_frame::ResManager *splitManager() const override; virtual split_frame::SplitView *parentRes() const override; virtual void setParentRes(SplitView *inst) override; virtual QWidget* widget() const override; virtual QSizeF stiffSize() const override; virtual QRectF outlineRect() const override; virtual void setOutline(const QRectF &outline) override; virtual qulonglong hashCode() const override; virtual void setVisible(bool state) override; virtual bool isVisible() const override; // SplitView interface public: virtual void initViews(ViewRes *a, ViewRes *b) override; virtual std::pair except(split_frame::ViewRes *inst) const override; virtual bool contains(split_frame::ViewRes *inst) const override; virtual void replaceView(split_frame::ViewRes *_new, split_frame::ViewRes *_old) override; virtual void setSplitInfo(float pos, float width) override; virtual float splitterWidth() const override; virtual float splitterPos() const override; virtual split_frame::SplitType splitType() const override; }; } // namespace SplitFrame #endif // SPLITPANEL