/** * @file ModuleToolBarGraphicsItem.h * @brief 模块工具栏 * @date 2011-09-22 */ #ifndef PAI_FRAME_WORKFLOWWIDGET_MODULETOOLBARGRAPHICSITEM_H #define PAI_FRAME_WORKFLOWWIDGET_MODULETOOLBARGRAPHICSITEM_H #include #include #include #include #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 m_pixmaps; ///< 图片 QList 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