133 lines
3.3 KiB
C++
133 lines
3.3 KiB
C++
/**
|
|
* @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
|