QtNovelUI/libSplitView/splitview.h

68 lines
2.2 KiB
C
Raw Normal View History

2023-08-26 12:40:57 +00:00
#ifndef SPLITVIEW_H
#define SPLITVIEW_H
#include "splitpanel.h"
namespace SplitFrame {
/**
* @brief
*/
2023-12-27 11:59:08 +00:00
class SPLITVIEW_EXPORT SplitView : private QWidget, public SplitView {
2023-08-26 12:40:57 +00:00
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;
2023-08-27 14:09:46 +00:00
virtual QString title() const override;
virtual bool canReplace() const override;
2023-08-26 12:40:57 +00:00
// 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;
// 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 drags_state = false;
2023-08-26 12:40:57 +00:00
virtual void relayout();
std::pair<QRectF, QRectF> view_rects();
QRectF handle_rect() const;
};
} // namespace SplitFrame
#endif // SPLITVIEW_H