85 lines
2.4 KiB
C++
85 lines
2.4 KiB
C++
#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, QWidget *parent = nullptr);
|
|
virtual ~BaseView();
|
|
|
|
virtual void setTitle(const QString &title);
|
|
virtual QString title() const override;
|
|
|
|
virtual void setIcon(const QIcon &icon);
|
|
virtual QIcon viewIcon() const;
|
|
|
|
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:
|
|
QIcon icon_store;
|
|
QString title_store;
|
|
DragHeader *title_header;
|
|
ViewRes *parent_store;
|
|
QList<QWidget *> comps_list;
|
|
|
|
protected:
|
|
virtual void installPerceptionHandle(ViewPresent *obj);
|
|
};
|
|
} // namespace SplitFrame
|
|
|
|
#endif // BASEVIEW_H
|