QtNovelUI/libSplitView/baseview.h

87 lines
2.5 KiB
C
Raw Normal View History

2023-08-26 12:40:57 +00:00
#ifndef BASEVIEW_H
#define BASEVIEW_H
#include "splitpanel.h"
#include <QFrame>
#include <QIcon>
#include <QLabel>
#include <QString>
namespace SplitFrame {
class BaseView;
/**
* @brief
*/
class DragHeader : public QFrame {
public:
DragHeader(BaseView *bind);
void setIcon(const QIcon &icon);
QIcon icon() const;
void setText(const QString &title);
QString text() const;
private:
QIcon icon_inst;
QLabel *const icon_store, *const title_store;
BaseView *const view_core;
std::tuple<bool, QPointF> press_flag = std::make_tuple(false, QPointF());
// QWidget interface
protected:
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseReleaseEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;
};
/**
* @brief
*/
class SPLITVIEW_EXPORT BaseView : private QWidget, public RectCom {
friend class ViewPresent;
public:
BaseView(const QString &title, QWidget *view, bool empty = false, bool replaceable = false, QWidget *parent = nullptr);
2023-08-26 12:40:57 +00:00
virtual ~BaseView();
virtual void setTitle(const QString &title);
2023-08-27 14:09:46 +00:00
virtual QString title() const override;
2023-08-26 12:40:57 +00:00
virtual void setIcon(const QIcon &icon);
virtual QIcon viewIcon() const;
virtual bool canReplace() const override;
2023-08-26 12:40:57 +00:00
virtual bool contains(QWidget *inst) const override;
// ViewRes interface
public:
virtual ViewPresent *viewPanel() const override;
virtual void setParentRes(ViewRes *inst) override;
virtual ViewRes *parentRes() const override;
virtual void pRelease() override;
virtual void pClose() override;
virtual void registElement(QWidget *child) override;
// RectCom interface
public:
virtual QWidget *bind() const override;
virtual QRectF outline() const override;
virtual void relayout(const QRectF &outline) override;
virtual void paintEvent(QPaintEvent *ev) override;
private:
bool replace_able;
2023-08-27 14:09:46 +00:00
QIcon icon_store;
QString title_store;
2023-08-26 12:40:57 +00:00
DragHeader *title_header;
ViewRes *parent_store;
QList<QWidget *> comps_list;
protected:
virtual void installPerceptionHandle(ViewPresent *obj);
};
} // namespace SplitFrame
#endif // BASEVIEW_H