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

160 lines
5.4 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 PaiObjectBrowser.h
* @brief 一个支持P.A.I系统对象浏览选择及输入包括拖拽的复合文本框
* @date: 2012-3-1
* @author: sinapec
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PAIOBJECTBROWSER_H_
#define PAI_FRAME_WORKFLOWVIEW_PAIOBJECTBROWSER_H_
#include "ParameterItemControl.h"
#include <QUuid>
#include <QMap>
class QStringListModel;
namespace pai
{
namespace gui
{
/**
* @class CPaiObjectBrowser
* @brief 一个支持P.A.I系统对象浏览选择及输入包括拖拽的复合文本框
*/
class CPaiObjectBrowser:public PaiLineEdit,public CParameterItemControl
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param objectTypeID 对象类型
* @param pParent 父控件的句柄
*/
CPaiObjectBrowser(const QList<QUuid>& lstObjectTypeIDs,QWidget* pParent = 0);
/**
* @brief 析构函数
*/
virtual ~CPaiObjectBrowser();
/**
* @brief 获取与text相对应的背后的Value
*/
QString GetData();
/**
* @brief 设置与text相对应的背后的Value
* @param strData 与text相对应的背后的数据
*/
void SetData(const QString& strData);
protected:
/**
* @brief 支持从P.A.I系统的数据树拖拽对象
* @param e 拖拽事件
*/
virtual void dropEvent ( QDropEvent *pEvent);
/**
* @brief 重载此函数来判断拖拽进来的数据是否合法
* @param e 拖拽事件
*/
virtual void dragEnterEvent ( QDragEnterEvent *pEvent);
/**
* @brief 重载该函数,为输入内容提供智能提示
* @param e 焦点事件
*/
virtual void focusInEvent ( QFocusEvent * e );
/**
* @brief 重载该函数根据输入内容匹配text相对应的背后数据
* @param e 焦点事件
*/
virtual void focusOutEvent ( QFocusEvent * e );
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
private:
/**
* @brief 从数据模型树获取所有支持类型的数据以供用户选择
*/
void BuildCompleteModel();
private slots:
/**
* @brief 这个槽函数用来在用户清空编辑框时将其对应的data也清空
* @param strNewText 新输入的文本
*/
void slotOnTextEdited(const QString& strNewText);
/**
* @brief 下拉所有的可选数据
*/
void slotBrowseAllData();
private:
QList<QUuid> m_lstObjectTypeIDs;//支持的对象类型
QString m_strData;//与text相对应的背后的Value
QMap<QString,QString> m_mapTexts;//key代表显示出来的文本 value代表背后的值
QStringListModel* m_pCompleterModel;
QString m_strOldText;//之前输入的文本
QString m_strOldValue;
signals:
/**
*@brief layerPick file 改变时发送该信号
*/
void signalLayerPickFileChanged(const QString& layerPickFile);
};
/**
* @class CHdfsFileEditor
* @brief 一个支持P.A.I系统输出模块的文本编译器
*/
class CHdfsFileEditor :public PaiLineEdit,public CParameterItemControl
{
/**
* @brief 构造函数
* @param objectTypeID 对象类型
* @param pParent 父控件的句柄
*/
public:
CHdfsFileEditor(const QUuid& workflowID, QWidget* pParent = 0);
/**
* @brief 析构函数
*/
virtual ~CHdfsFileEditor();
/**
* @brief 获取与text相对应的背后的Value
*/
QString GetData();
protected:
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
private:
QUuid m_workflowID; //工作流ID
};
}
}
#endif /* PAI_FRAME_WORKFLOWVIEW_PAIOBJECTBROWSER_H_ */