/** * @file PaiJobParameterItemWidget.h * @brief 日志中参数设置界面 * @date 2013-04-18 */ #ifndef PAI_FRAME_WORKFLOWWIDGET_PAIJOBPARAMETERITEMWIDGET_H #define PAI_FRAME_WORKFLOWWIDGET_PAIJOBPARAMETERITEMWIDGET_H #include #include class QMouseEvent; class QPushButton; class QLabel; namespace pai { namespace gui { /** * @enum Direction * @brief 拖拽方向枚举类型 */ enum Direction { NONE = 0x00, ///< 默认 RIGHT= 0x01, ///< 向右 DOWN = 0x02, ///< 向下 RIGHTBOTTOM = 0x03 ///< 右下 }; /** * @class PaiParameTextEdit * @brief 日志信息显示编辑框,实现在光标移动到边界的时候光标图标没有变化情况 */ class PaiParameTextEdit : public QTextEdit { public: /** * @brief 构造函数 * @param[in] pParent 父亲 */ PaiParameTextEdit(QWidget *pParent = NULL); /** * @brief 析构函数 */ virtual ~PaiParameTextEdit(); protected: /** * @brief 重载eventFilter用于拦截滑动条鼠标滑动事件,改变鼠标滑动样式(32192) * @param[in] pObj 被监控对象 * @param[in] pEvent 事件 */ virtual bool eventFilter(QObject *pObj, QEvent *pEvent); }; /** * class PaiJobParameterItemWidget * @brief 日志中参数设置界面类 */ class PaiJobParameterItemWidget : public QWidget { Q_OBJECT public: /** * @brief 构造函数 * @param[in] pParent 父亲 */ PaiJobParameterItemWidget(QWidget *pParent = NULL); /** * @brief 析构函数 */ virtual ~PaiJobParameterItemWidget(); /** * @brief 设置参数编辑框信息 * @param[in] text 文本信息 */ void SetParamEditInfo(const QString& text); /** * @brief 获取鼠标是否进入widget * @return 进入标志 */ bool GetMouseEnterWidgetFlag() const; /** * @brief 获取widget 是否被固定标记 * @return 固定位置标志 */ bool GetFixWidgetPosFlag() const; protected: /** * @brief 重写鼠标进入函数 * @param[in] pEvent 鼠标进入事件指针 */ virtual void enterEvent(QEvent *pEvent); /** * @brief 重写鼠标离开函数 * @param[in] pEvent 鼠标离开事件指针 */ virtual void leaveEvent(QEvent *pEvent); /** * @brief 重写鼠标移动函数 * @param[in] pEvent 鼠标移动事件指针 */ virtual void mouseMoveEvent(QMouseEvent *pEvent); /** * @brief 重写鼠标按下函数 * @param[in] pEvent 鼠标按下事件指针 */ virtual void mousePressEvent(QMouseEvent *pEvent); /** * @brief 重写鼠标释放函数 * @param[in] pEvent 鼠标释放事件指针 */ virtual void mouseReleaseEvent(QMouseEvent *pEvent); /** * @brief 绘制函数 * @param[in] pEvent 绘制事件 */ virtual void paintEvent(QPaintEvent *pEvent) ; private: /** * @brief 设置界面布局 */ void SetWidgetLayout(); /** * @brief 设置区域拖拽光标变化 * @param[in] cursorGlobalPoint 鼠标位置 */ void SetRegionCursorShape(const QPoint &cursorGlobalPoint); private slots: /** * @brief 固定窗口 * @param[in] fixed 是否固定窗口 */ void FixTheWidget(bool fixed); private: QLabel *m_pLable; ///< 标题 PaiParameTextEdit *m_pParamInfoTextEdit; ///< 信息显示控件 QPushButton *m_pBtn; ///< 按钮 bool m_press; ///< 按压标志 bool m_EnterFlag; ///< 进入标志 bool m_fixed; ///< 固定标志 QPoint m_DragPosition; ///< 抓取位置 Direction m_direction; ///< 方向 }; } } #endif ///< PAI_FRAME_WORKFLOWWIDGET_PAIJOBPARAMETERITEMWIDGET_H