logplus/ModuleConsole/include/PaiInfoEditor.h
2026-01-16 17:18:41 +08:00

165 lines
4.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file PaiInfoEditor.h
* @brief 该类代表了工作流参数面板上每个参数的编辑器,除了编辑器本身外还包含了错误提示和Loading动画
* @date 2011-10-25
* @Author dev
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PAIINFOEDITOR_H
#define PAI_FRAME_WORKFLOWVIEW_PAIINFOEDITOR_H
#include <QFrame>
#include "ParameterProperty.h"
#include "PaiToolButton.h"
class QPushButton;
class QLabel;
class QMovie;
class QModelIndex;
namespace pai {
namespace gui {
class PaiLabel;
}
namespace graphics2d {
class ParameterProperty;
/**
* @class CPaiInfoEditor
* @brief 该类代表了工作流参数面板上每个参数的编辑器,除了编辑器本身外还包含了错误提示和Loading动画
*/
class CPaiInfoEditor : public QFrame
{
Q_OBJECT
public:
/**
*@brief 将ToolTip的内容截短换行
*/
static QString GetToolTipDescription(QString description);
/**
* @brief 构造函数
* @param pParameterProperty 与该编辑器相关联的参数面板树节点
* @param parent 父控件句柄
*/
CPaiInfoEditor(ParameterProperty* pParameterProperty,QWidget *parent=0,const QString& strDisplayName="");
/**
* @brief 析构函数
*/
virtual ~CPaiInfoEditor();
/**
* @brief 得到内部的编辑器句柄,不同参数类型对应不同的编辑器
*/
QWidget* GetInternalEditor() const;
/**
* @brief 是否有删除按钮
*/
bool HasDeleteButton() const;
/*
* @brief 实现sizeHint用来获得设计的高度
*/
virtual QSize sizeHint() const;
public slots:
/**
* @brief 相应模块树数据改变
* @param dataIndex 树模型节点
* @param strPropertyName 改变的属性名
* @param varPropertyValue 改变的属性值
*/
void slotDataPropertyChanged(const QModelIndex& dataIndex,const QString& strPropertyName,const QVariant& varPropertyValue);
void slotUpdateHideShowItemsIcon(bool hide);
protected:
/**
* @brief 实现该函数以捕获focusin focuseOut事件
*/
bool eventFilter(QObject *obj, QEvent *event);
private:
/**
* @brief 通过当前节点得到对应参数项的父亲参数项注意父亲参数项必须是个数组元素项的参数项ID
* @param pParameterProperty 当前节点
*/
QString _GetDeleteItemID(ParameterProperty* pParameterProperty) const;
/**
* @brief 根据参数控件类型创建相应的控件
* @return 类型枚举对应的控件
*/
QWidget* CreateInternalEditor();
private slots:
/**
* @brief 显示Loading动画
*/
void slotShowLoadingAnimate();
/**
* @brief 停止Loading动画
*/
void slotStopAnimate();
/**
* @brief 设置错误信息并显示
* @param errorMessage 错误信息内容
*/
void slotSetErrorMessage(const QString& errorMessage);
/**
* @brief 响应删除按钮的点击事件并发送信号
*/
void slotOnDeleteButtonClick();
/**
* @brief 响应显示隐藏按钮的点击事件并发送信号
*/
void slotOnHideShowButtonClick();
/**
* @brief 响应显示隐藏非重要参数按钮的点击事件并发送信号
*/
void slotOnHideShowOptionalButtonClick();
/**
* @brief 显示或隐藏删除按钮
* @param bShow true:显示删除按钮 false:隐藏删除按钮
*/
void slotShowDeleteButton(bool bShow);
private:
ParameterProperty* m_pParameterProperty;//相应的参数面板节点
pai::gui::PaiLabel *m_label;//错误信息提示区
QWidget* m_pInternalEditor;//内部的编辑器句柄
QPushButton *m_pMovieLabel;//Loading动画显示区
QMovie *m_pMovie;//Loading动画
bool HideBrothers;
//pai::gui::PaiToolButton* pHideShowButton ;
bool HideOptionals;
pai::gui::PaiToolButton* pHideShowOptionalButton ;
signals:
/**
* @brief 当编辑器附带一个删除按钮时,一旦用户点击了删除按钮,则触发此信号
* @param strDeleteItemID 待删除的参数项ID
*/
void signalDeleteItem(const QString& strDeleteItemID);
/**
* @brief 当编辑器附带一个隐藏显示按钮时,一旦用户点击了该按钮,则触发此信号
* @param strDeleteItemID 待隐藏的参数项ID
*/
void signalHideShowItems(const QString& strDeleteItemID,bool hideBrothers);
/**
* @brief 当编辑器附带一个隐藏显示按钮时,一旦用户点击了该按钮,则触发此信号
* @param strDeleteItemID 待隐藏的参数项ID
*/
void signalHideShowOptionalItems(const QString& strDeleteItemID,bool hide);
/**
* @brief 内部的失去焦点信号
*/
void _signalInternalEditorLostFocus(const QString &str);
/**
*@brief QLineEditor 输入 + - 号失去焦点时发送该信号
*/
void editFocuseOut();
};
}
}
#endif