logplus/Workflow/WFEngine/Component/WorkflowWidget/include/ModulePortGraphicsItem.h

103 lines
2.9 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/**
* @file ModulePortGraphicsItem.h
* @brief
* @date 2011-09-19
*/
#ifndef PAI_FRAME_WORKFLOWWIDGET_MODULEPORTGRAPHICSITEM_H
#define PAI_FRAME_WORKFLOWWIDGET_MODULEPORTGRAPHICSITEM_H
#include <QSizeF>
#include <QColor>
#include <QPainterPath>
#include "PaiModuleStyle.h"
class QStyleOptionGraphicsItem;
class QWidget;
namespace pai
{
namespace graphics2d
{
/**
* @class ModulePortGraphicsItem
* @brief
*/
class ModulePortGraphicsItem
{
friend class ModuleGraphicsItem;
public:
/**
* @brief
* @param[in] pStyle
* @param[in] center
* @param[in] radius
* @param[in] portDirection
*/
ModulePortGraphicsItem(pai::graphics2d::PaiModuleStyle *pStyle,
const QPointF& center,
qreal radius,
PortDirection portDirection);
/**
* @brief
*/
virtual ~ModulePortGraphicsItem();
/**
* @brief
* @param[in] selected true
* false
*/
void SetPortSelected(bool selected);
protected:
/**
* @brief
* @param[in] pEvent hoverEnter事件
*/
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *pEvent);
/**
* @brief
* @param[in] pEvent hoverLeave事件
*/
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *pEvent);
/**
* @brief
* @param[in] pEvent mouseRelease事件
*/
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *pEvent);
/**
* @brief
* @return
*/
virtual QRectF boundingRect() const;
/**
* @brief
* @param[in] pPainter
* @param[in] pOption
* @param[in] pWidget
*/
virtual void paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *pWidget = NULL);
private:
pai::graphics2d::PaiModuleStyle *m_pStyle; ///< 模块的绘图信息
QPointF m_center; ///< 端口中心的坐标
qreal m_diameter; ///< 拐角大小
bool m_selected; ///< 选中状态
bool m_OnHovering; ///< hover状态
bool m_light; ///< 高亮状态
PortDirection m_PortDirection; ///< 端口方向
QPainterPath m_path; ///< 端口外形
};
}
}
#endif ///< PAI_FRAME_WORKFLOWWIDGET_MODULEPORTGRAPHICSITEM_H