151 lines
3.8 KiB
C++
151 lines
3.8 KiB
C++
/**
|
|
* @file ModuleToolBarGraphicsItem.h
|
|
* @brief 模块工具栏
|
|
* @date 2011-09-22
|
|
*/
|
|
#ifndef PAI_FRAME_WORKFLOWWIDGET_MODULETOOLBARGRAPHICSITEM_H
|
|
#define PAI_FRAME_WORKFLOWWIDGET_MODULETOOLBARGRAPHICSITEM_H
|
|
|
|
#include <QGraphicsItem>
|
|
#include <QList>
|
|
#include <QPixmap>
|
|
#include <QGraphicsOpacityEffect>
|
|
#include "Turtle.h"
|
|
namespace pai
|
|
{
|
|
namespace graphics2d
|
|
{
|
|
class ModuleGraphicsItem;
|
|
}
|
|
}
|
|
|
|
namespace pai
|
|
{
|
|
namespace graphics2d
|
|
{
|
|
/**
|
|
* @class ModuleToolBarGraphicsItem
|
|
* @brief 模块工具栏
|
|
*/
|
|
class PAI_WORKFLOWWIDGET_EXPORT ModuleToolBarGraphicsItem : public QGraphicsItem
|
|
{
|
|
public:
|
|
/**
|
|
* @brief 模块工具栏类型
|
|
*/
|
|
enum
|
|
{
|
|
Type = UserType + 1010 ///< 当前工具栏item类型
|
|
};
|
|
|
|
/**
|
|
* @brief 构造函数
|
|
*/
|
|
ModuleToolBarGraphicsItem();
|
|
|
|
/**
|
|
* @brief 析构函数
|
|
*/
|
|
virtual ~ModuleToolBarGraphicsItem();
|
|
|
|
/**
|
|
* @brief 获取当前item类型
|
|
* @return item类型
|
|
*/
|
|
virtual int type() const;
|
|
|
|
/**
|
|
* @brief 当鼠标落在模块图元上时调用该函数建立关联
|
|
* @param[in] pModuleItem 模块图元
|
|
*/
|
|
void AttachModuleItem(ModuleGraphicsItem *pModuleItem);
|
|
|
|
/**
|
|
* @brief 当鼠标移开模块图元上时调用该函数移除关联
|
|
*/
|
|
void DetachModuleItem();
|
|
|
|
/**
|
|
* @brief 实现该虚函数,返回模块图元的包围矩形
|
|
* @return item外围矩形
|
|
*/
|
|
virtual QRectF boundingRect() const;
|
|
|
|
/**
|
|
* @brief 设置hover的状态
|
|
* @param[in] hovering 正在hover
|
|
*/
|
|
void SetHovering(bool hovering);
|
|
|
|
/**
|
|
* @brief 得到hover的状态
|
|
* @return hover状态
|
|
*/
|
|
bool GetHovering() const;
|
|
|
|
/**
|
|
* @brief 设置透明度使能
|
|
* @param[in] enabled 使能标志
|
|
*/
|
|
void SetOpacityEffect(bool enabled);
|
|
|
|
/**
|
|
* @brief 设置模块工具栏是否处于只读场景,如果是只读场景,本控件不应该显示出来
|
|
* @param[in] readonly只读
|
|
*/
|
|
void SetScenceReadOnly(bool readyonly);
|
|
|
|
/**
|
|
* @brief 设置是否显示
|
|
* @param[in] visible 显示标志
|
|
*/
|
|
void SetToolBarVisible(bool visible);
|
|
|
|
protected:
|
|
/**
|
|
* @brief 重写该虚函数,实现鼠标进入覆盖操作
|
|
* @param[in] pEvent 鼠标hoverEnter事件
|
|
*/
|
|
virtual void hoverEnterEvent (QGraphicsSceneHoverEvent *pEvent);
|
|
|
|
/**
|
|
* @brief 重写该虚函数,实现鼠标在模块上移动操作
|
|
* @param[in] pEvent 鼠标hoverMove事件
|
|
*/
|
|
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *pEvent);
|
|
|
|
/**
|
|
* @brief 重写该虚函数,实现鼠标覆盖离开操作
|
|
* @param[in] pEvent 鼠标hoverLeave事件
|
|
*/
|
|
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *pEvent);
|
|
|
|
/**
|
|
* @brief 重写该虚函数,实现鼠标释放操作
|
|
* @param[in] pEvent 鼠标mouseRelease事件
|
|
*/
|
|
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *pEvent);
|
|
|
|
/**
|
|
* @brief 实现该虚函数,绘制模块工具栏
|
|
* @param[in] pPainter 画笔
|
|
* @param[in] pOption 模块风格参数
|
|
* @param[in] pWidget 画布
|
|
*/
|
|
virtual void paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *pWidget = NULL);
|
|
|
|
private:
|
|
QList<QPixmap> m_pixmaps; ///< 图片
|
|
QList<QRectF> m_ButtonRects; ///< 按钮区域
|
|
QGraphicsOpacityEffect m_OpacityEffect; ///< 透明效果
|
|
int m_HoverButtonIndex; ///< hover按钮的索引
|
|
ModuleGraphicsItem *m_pModuleItem; ///< 模块
|
|
bool m_hovering; ///< hover标志
|
|
bool m_ScenceReadOnly; ///< 所处场景是否只读
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif ///< PAI_FRAME_WORKFLOWWIDGET_MODULETOOLBARGRAPHICSITEM_H
|