logplus/Workflow/WFEngine/Component/WorkflowWidget/include/ModelProgressGraphicsItem.h
2026-01-16 17:18:41 +08:00

130 lines
3.3 KiB
C++

/**
* @file ModelProgressGraphicsItem.h
* @brief 日志中进度条
* @date 2013-4-17
*/
#ifndef PAI_FRAME_WORKFLOWWIDGET_MODULEPROGRESSGRAPHICSITEM_H
#define PAI_FRAME_WORKFLOWWIDGET_MODULEPROGRESSGRAPHICSITEM_H
#include <QGraphicsItem>
#include <QWidget>
/**
* @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