logplus/Workflow/WFEngine/Component/WorkflowWidget/include/WorkflowGraphicsView.h

133 lines
3.3 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/**
* @file WorkflowGraphicsView.h
* @brief
* @date 2011-09-13
*/
#ifndef PAI_FRAME_WORKFLOWWIDGET_WORKFLOWGRAPHICSVIEW_H
#define PAI_FRAME_WORKFLOWWIDGET_WORKFLOWGRAPHICSVIEW_H
#include <QGraphicsView>
class QGraphicsItem;
namespace pai
{
namespace graphics2d
{
/**
* @class WorkflowGraphicsView
* @brief
*/
class WorkflowGraphicsView : public QGraphicsView
{
Q_OBJECT
public:
/**
* @brief
* @param[in] pScene
* @param[in] pParent
*/
WorkflowGraphicsView(QGraphicsScene *pScene, QWidget *pParent = NULL);
/**
* @brief
*/
virtual ~WorkflowGraphicsView();
/**
* @brief
* @param[in] readonly
*/
void SetScenceReadOnly(bool readonly);
protected:
/**
* @brief
* @param[in] pEvent
*/
virtual void contextMenuEvent(QContextMenuEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void dropEvent(QDropEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void dragEnterEvent(QDragEnterEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void dragLeaveEvent(QDragLeaveEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void dragMoveEvent(QDragMoveEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void keyPressEvent(QKeyEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void keyReleaseEvent(QKeyEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void mousePressEvent(QMouseEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void mouseReleaseEvent(QMouseEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void mouseMoveEvent(QMouseEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
void focusInEvent(QFocusEvent *pEvent);
private:
/**
* @brief
* @return
*/
QRectF CalculateAdaptiveSceneRect();
private slots:
/**
* @brief 使Item居中显示
* @param[in] pItem item
*/
void slotItemNeedCenterOn(QGraphicsItem *pItem);
private:
bool m_SceneReadOnly; ///< 配置场景是否只读
QGraphicsItem *m_pEnsureVisibleItem; ///< 暂存确保可见的item
};
}
}
#endif ///< PAI_FRAME_WORKFLOWWIDGET_WORKFLOWGRAPHICSVIEW_H