70 lines
2.3 KiB
C
70 lines
2.3 KiB
C
|
#ifndef SPLITVIEW_H
|
||
|
#define SPLITVIEW_H
|
||
|
|
||
|
#include "splitpanel.h"
|
||
|
|
||
|
namespace SplitFrame {
|
||
|
|
||
|
/**
|
||
|
* @brief 分割视图
|
||
|
*/
|
||
|
class SPLITVIEW_EXPORT SplitView : private QWidget, public SplitRect {
|
||
|
|
||
|
public:
|
||
|
SplitView(RectCom *first, RectCom *next, QWidget *parent = nullptr);
|
||
|
virtual ~SplitView();
|
||
|
|
||
|
// ViewRes interface
|
||
|
public:
|
||
|
virtual QWidget *bind() const override;
|
||
|
virtual ViewPresent *viewPanel() const override;
|
||
|
virtual void setParentRes(ViewRes *inst) override;
|
||
|
virtual ViewRes *parentRes() const override;
|
||
|
virtual void registElement(QWidget *child) override;
|
||
|
virtual void pRelease() override;
|
||
|
virtual void pClose() override;
|
||
|
|
||
|
// RectCom interface
|
||
|
public:
|
||
|
virtual QRectF outline() const override;
|
||
|
virtual void relayout(const QRectF &outline) override;
|
||
|
virtual void paintEvent(QPaintEvent *ev) override;
|
||
|
virtual bool contains(QWidget *) const override;
|
||
|
|
||
|
// SplitRect interface
|
||
|
public:
|
||
|
virtual std::pair<RectCom *, RectCom *> child() const override;
|
||
|
virtual void removeComp(RectCom *child) override;
|
||
|
virtual void replaceComp(RectCom *view, RectCom *old) override;
|
||
|
virtual float splitterWidth() const override;
|
||
|
virtual float splitterPos() const override;
|
||
|
virtual SplitType splitType() const override;
|
||
|
virtual void setSplitInfo(SplitType type, float pos, float width, bool relayout) override;
|
||
|
|
||
|
// QObject interface
|
||
|
public:
|
||
|
virtual bool eventFilter(QObject *watched, QEvent *event) override;
|
||
|
|
||
|
// QWidget interface
|
||
|
protected:
|
||
|
virtual void mousePressEvent(QMouseEvent *event) override;
|
||
|
virtual void mouseReleaseEvent(QMouseEvent *event) override;
|
||
|
virtual void mouseMoveEvent(QMouseEvent *event) override;
|
||
|
virtual void resizeEvent(QResizeEvent *event) override;
|
||
|
|
||
|
private:
|
||
|
ViewRes *parent_inst;
|
||
|
QList<RectCom *> child_store;
|
||
|
// type, pos, width
|
||
|
std::tuple<SplitType, float, float> split_info_value;
|
||
|
bool press_flags = false, drags_flag = false;
|
||
|
|
||
|
virtual void relayout();
|
||
|
std::pair<QRectF, QRectF> view_rects();
|
||
|
QRectF handle_rect() const;
|
||
|
};
|
||
|
|
||
|
} // namespace SplitFrame
|
||
|
|
||
|
#endif // SPLITVIEW_H
|