#ifndef BASEVIEW_H #define BASEVIEW_H #include "splitview_interface.h" #include #include #include #include namespace base_view { class BaseView; /** * @brief 视图拖拽标题栏 */ class SPLITVIEW_EXPORT DragHeader : public QLabel { public: DragHeader(BaseView *bind); private: BaseView *view_core; std::tuple 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