/** * @file ModelProgressGraphicsItem.h * @brief 日志中进度条 * @date 2013-4-17 */ #ifndef PAI_FRAME_WORKFLOWWIDGET_MODULEPROGRESSGRAPHICSITEM_H #define PAI_FRAME_WORKFLOWWIDGET_MODULEPROGRESSGRAPHICSITEM_H #include #include /** * @brief 进度条类型 */ enum { INPUT_BARTYPE = 1, ///< 输入类型 OUTPUT_BARTYPE ///< 输出类型 }; namespace pai { namespace gui { /** * @class ModelProgressGraphicsItem * @brief 进度条item */ class ModelProgressGraphicsItem: public QGraphicsItem { public: /** * @brief 进度条item的类型 */ enum { Type = UserType + 1345 ///< 当前item类型 }; /** * @brief 构造函数 * @param[in] barType 进度条类型(输入或者输出) * @param[in] stepID 模块的stepID * @param[in] pParent 父亲 */ ModelProgressGraphicsItem(int barType, int stepID, QGraphicsItem *pParent = NULL); /** * @brief 析构函数 */ virtual ~ModelProgressGraphicsItem(); /** * @brief 进度条类型 * @return 进度条类型 */ virtual int type() const; /** * @brief 设置进度条颜色 * @param[in] beforeColor 进度条开始颜色 * @param[in] afterColor进度条后面的颜色 * @param[in] fontColor 进度条上面的字体颜色 */ void SetBarColor(const QColor& beforeColor, const QColor& afterColor, const QColor& fontColor); /** * @brief 设置进度条上面的内容 * @param[in] barText 进度条上面的文本 * @param[in] veryText 进度条百分比 * @param[in] topText 进度条上面的字体 */ void SetBarText(const QString& barText, const QString& veryText, const QString& topText); /** * @brief 更新位置 */ void UpdatePosition(); /** * @brief 实现该虚函数,返回模块图元的包围矩形 * @return 进度条的矩形区域 */ virtual QRectF boundingRect() const; /** * @brief 获取类型 * @return INPUT_BARTYPE 输入类型 * OUTPUT_BARTYPE 输出类型 */ int GetBarType() const; /** * @brief 获取对应模块的stepID * @return 模块stepID */ int GetStepID() const; private: /** * @brief 实现该虚函数,实现进度条的绘制 * @param[in] pPainter 画笔 * @param[in] pOption 模块风格参数 * @param[in] pWidget 画布 */ virtual void paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *pWidget = NULL); private: qreal m_width; ///< 进度条宽度 qreal m_height; ///< 进度条高度 QColor m_BeforeColor; ///< 进度条渐变色 QColor m_AfterColor; ///< 进度条渐变色 QColor m_FontColor; ///< 进度条字体颜色 QString m_BarText; ///< 进度条文本 QString m_VeryText; ///< 速度文本 QString m_TopText; ///< 进度条上部文本 int m_BarType; ///< 进度条类型 int m_StepID; ///< 进度条所属模块的stepID }; } } #endif ///< PAI_FRAME_WORKFLOWWIDGET_MODULEPROGRESSGRAPHICSITEM_H