QtNovelUI/libSplitView/baseview.h

64 lines
1.7 KiB
C++

#ifndef BASEVIEW_H
#define BASEVIEW_H
#include "splitview_interface.h"
#include <QFrame>
#include <QIcon>
#include <QLabel>
#include <QString>
namespace base_view {
class BaseView;
/**
* @brief 视图拖拽标题栏
*/
class SPLITVIEW_EXPORT DragHeader : public QLabel {
public:
DragHeader(BaseView *bind);
private:
BaseView *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 : public QWidget, public split_frame::ViewBase {
public:
BaseView(bool replace, bool retrieve, bool close);
void setParent(ViewRes *pinst);
// ViewRes interface
public:
virtual split_frame::ResManager *splitManager() const override;
virtual split_frame::ViewRes *parentRes() const override;
virtual QWidget *widget() const override;
virtual bool canRetrieve() const override;
virtual bool canClose() const override;
virtual bool canReplace() const override;
// ViewBase interface
public:
virtual QIcon icon() const override;
virtual QString title() const override;
virtual QSizeF viewSize() const override;
virtual void resizeView(const QSizeF &outline) override;
private:
ViewRes *parent_res = nullptr;
bool m_replace = false, m_retrieve = false, m_close = false;
};
} // namespace SplitFrame
#endif // BASEVIEW_H