/** * @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 #include 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& 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 m_lstObjectTypeIDs;//支持的对象类型 QString m_strData;//与text相对应的背后的Value QMap 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_ */