logplus/Workflow/WFWidget/include/PaiWorkspace.h

177 lines
5.5 KiB
C
Raw Permalink Normal View History

2026-01-17 12:55:45 +08:00
/**
* @file PaiWorkspace.h
* @brief
* @date 2012-05-07
*/
#ifndef PAI_FRAME_WIDGET_PAIWORKSPACE_H
#define PAI_FRAME_WIDGET_PAIWORKSPACE_H
#include "PaiTabWidget.h"
#include "Turtle.h"
namespace pai
{
namespace gui
{
class PaiDropMask;
}
}
namespace pai
{
namespace gui
{
/**
* @class PaiWorkspaceExtension
* @brief PaiWorkspace的功能拓展
*/
class PaiWorkspaceExtension
{
public:
/**
* @brief ,
* @param[in] pView
* @param[in] icon
* @param[in] text
* @param[in] pTabWidget
* @return
*/
virtual bool AddViewToTabWidget(QWidget *pView,
const QIcon & icon,
const QString & text,
pai::gui::PaiTabWidget *pTabWidget) = 0;
/**
* @brief ,
* @param[in] pView
* @param[in] pTabWidget
* @return
*/
virtual bool RemoveViewFromTabWidget(QWidget *pView, pai::gui::PaiTabWidget *pTabWidget) = 0;
};
/**
* @class PaiWorkspace
* @brief
*/
class PAI_WIDGET_EXPORT PaiWorkspace : public QWidget
{
Q_OBJECT
public:
/**
* @brief
* @param[in] pParent
*/
PaiWorkspace(QWidget *pParent);
/**
* @brief
*/
virtual ~PaiWorkspace();
/**
* @brief Widget到指定区域
* @param[in] areaName
* @param[in] pWidget
* @param[in] text
* @param[in] icon
*/
void AddWidget(const QString & areaName, QWidget *pWidget, const QString & text, const QIcon & icon);
/**
* @brief ,
* @param[in] pView
* @param[in] icon
* @param[in] text
* @param[in] pTabWidget
* @return
*/
static bool AddViewToTabWidget(QWidget *pView, const QIcon & icon, const QString & text, pai::gui::PaiTabWidget *pTabWidget);
/**
* @brief ,
* @param[in] pView
* @param[in] pTabWidget
* @return
*/
static bool RemoveViewFromTabWidget(QWidget *pView, pai::gui::PaiTabWidget *pTabWidget);
/**
* @brief Tab组件
* @return Tab组件
*/
PaiTabWidget* GetPrimaryTabWidget() const;
/**
* @brief PaiWorkspace增加功能
* @param[in] pExtension
*/
static void SetExtension(PaiWorkspaceExtension *pExtension);
protected:
/**
* @brief
* @param[in] pEvent
*/
virtual void dropEvent(QDropEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
virtual void dragEnterEvent(QDragEnterEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
virtual void dragMoveEvent(QDragMoveEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
virtual void dragLeaveEvent(QDragLeaveEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
virtual void closeEvent(QCloseEvent *pEvent);
/**
* @brief eventFilter
* @param[in] pObject
* @param[in] pEvent
*/
virtual bool eventFilter(QObject *pObject, QEvent *pEvent);
private slots:
/**
* @brief
*/
void OnAllTabRemoved();
private:
PaiDropMask *m_pDropAreaHint; ///< 拖动中的页签的落点的区域位置提示
DragState m_DragState; ///< 拖拽参数
PaiTabWidget *m_pMainTabWidget; ///< 主tab页
static PaiWorkspaceExtension *m_pWorkspaceExtension; ///< PaiWorkspace功能拓展,目前需要拓展与TabWidget之间的注册和反注册功能
signals:
/**
* @brief title
* @param[in] title
*/
void CurrentTitleChanged(const QString & title);
/**
* @brief window连接后可用于标题刷新
*/
void SubtitleChanged();
};
}
}
#endif ///< PAI_FRAME_WIDGET_PAIWORKSPACE_H