logplus/ModuleConsole/include/ParameterTableWidget.h

390 lines
9.6 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/*
* @file ParameterTableWidget.h
* @brief
* @date 2011-12-21
* @author sinapec
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PARAMETERTABLEWIDGET_H
#define PAI_FRAME_WORKFLOWVIEW_PARAMETERTABLEWIDGET_H
#include <QLabel>
#include "ParameterItemControl.h"
#include "PaiTableWidget.h"
class QTableWidget;
class QTableWidgetItem;
class QToolButton;
namespace pai
{
namespace gui
{
class PaiToolButton;
}
}
namespace pai
{
namespace module
{
class CParameterItem;
class CCompositeParameterItem;
class CTableParameterItemDelegate;
}
}
namespace pai
{
namespace graphics2d
{
struct SColumnMetaData
{
QString strColumnName;//该列的名字这个名字也同时是指定行在该列对应参数项的Id)
QString strColumnType;//该列的类型请参考ParameterItem.h中的ParameterType
QString strColumnWidget;//该列的控件类型请参考ParameterItem.h中的ParameterInputType)
QString strColumnWidgetData;//该列的控件的元数据
QString strColumnWidgetState;//该列的控件的状态
QString strColumnDefaultValue;//该列缺省值
};
/**
* @class CParameterTableActionIcon
* @brief
*/
class CParameterTableActionIcon : public QLabel
{
Q_OBJECT
public:
/**
* @brief
* @param strIconPath
* @param pParent
*/
CParameterTableActionIcon(const QString& strIconPath,int iRow,QWidget* pParent=0);
protected:
/**
* @brief 使icon时发送信号
*/
virtual void mouseReleaseEvent(QMouseEvent *pEvent);
private:
int m_iRow;//行号
signals:
/**
* @brief icon被鼠标点击的信号
*/
void signalIconClicked(int);
};
/**
* @class CParameterTableCombobox
* @brief
*/
class CParameterTableLineEdit: public pai::gui::PaiLineEdit
{
Q_OBJECT
public:
/**
* @brief
* @param pParameterItem
* @param pTableItem
* @param pParent
*/
CParameterTableLineEdit(pai::module::CParameterItem* pParameterItem,
QTableWidgetItem* pTableItem, QWidget* pParent = 0);
private slots:
/**
* @brief
*/
void slotOnEditingFinished();
void slotOnEditingFinished(const QString& text);
protected:
/**
* @brief
*/
virtual void focusOutEvent (QFocusEvent *pEvent);
private:
pai::module::CParameterItem* m_pParameterItem;
QTableWidgetItem* m_pTableItem;
signals:
/**
*@brief QLineEditor + -
*/
void editFocuseOut();
};
/**
* @class CParameterTableCombobox
* @brief
*/
class CParameterTableCombobox: public pai::gui::PaiComboBox
{
Q_OBJECT
public:
/**
* @brief
* @param pParameterItem
* @param pTableItem
* @param pParent
*/
CParameterTableCombobox(pai::module::CParameterItem* pParameterItem,
QTableWidgetItem* pTableItem, QWidget* pParent = 0);
/**
* @brief
*/
virtual ~CParameterTableCombobox();
protected:
/**
* @brief
*/
virtual void focusOutEvent (QFocusEvent *pEvent);
private:
/**
* @brief
* @return item文本
*/
QStringList GetVisibleText();
/**
* @brief
* @param[in] item索引
*/
void ShowMoreDialog(int index);
private slots:
/**
* @brief
*/
void slotOnIndexChanged();
/**
* @brief combox和TableWidgetItem的文本
* @param[in] text
*/
void SetText(const QString& text);
private:
pai::module::CParameterItem* m_pParameterItem;
QTableWidgetItem* m_pTableItem;
signals:
void stateChanged();
};
/**
* @class ParamTableWgt
*/
class ParamTableWgt : public pai::gui::PaiTableWidget
{
Q_OBJECT
public:
ParamTableWgt(QWidget* parent = 0);
ParamTableWgt(int rows, int columns, QWidget* parent = 0);
void setError(int row, int column, bool bError = true);
/*
* @brief sizeHint用来获得设计的高度
*/
virtual QSize sizeHint() const;
protected:
/**
* @brief
*/
void paintEvent(QPaintEvent* pEvent);
private:
int m_row;
int m_col;
bool m_bError;
};
/**
* @class CParameterTableWidget
* @brief
*/
class CParameterTableWidget:public QFrame,public pai::gui::CParameterItemControl
{
Q_OBJECT
public:
/**
* @brief
* @param pCompositeItem
* @param pParent
*/
CParameterTableWidget(pai::module::CParameterItem* pCompositeItem, QWidget* pParent=0);
/**
* @brief
*/
virtual ~CParameterTableWidget();
/**
* @brief
* @param[in] pCompositeItem
*/
virtual void SetData(pai::module::CCompositeParameterItem* pCompositeItem);
/**
* @brief
*/
QTableWidget* GetTable() const;
/**
* @brief JSON字符串并返回
*/
QString ToJsonString() const;
/**
* @brief set error message
*/
void setError(const QString &errMsg);
/**
* @brief AddButton
* @param bShow true:AddButton,false:AddButton
*/
void ShowAddButton(bool bShow);
/*
* @brief sizeHint用来获得设计的高度
*/
virtual QSize sizeHint() const;
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);
/**
* @brief
*/
virtual void paintEvent(QPaintEvent *pEvent);
protected slots:
/**
* @brief
*/
virtual void slotOnAddRow();
/**
* @brief
* @param iRow
*/
virtual void slotOnRemoveRow(int iRow);
/**
* @brief
*/
virtual void slotOnActiveRow();
/**
* @brief CheckBox选中或反选
* @param pCheckItem Checkbox的QTableWidgetItem
*/
virtual void slotOnCheckItem(QTableWidgetItem* pCheckItem);
/**
* @brief radioButton时
* @param[in] toggled radioButton选中状态
*/
void SelectRow(bool toggled);
/**
* @brief radioButton到表格的某单元格
* @param[in] row
* @param[in] col
*/
void SetCellRadioButton(int row, int col);
protected:
int m_iOldSelectRow;
ParamTableWgt* m_pTable;
QToolButton* m_pBtnAdd;
bool m_bBtnAddShouldShow; //用来标定当前是否需要显示添加按钮
pai::module::CCompositeParameterItem* m_pRootItem;
pai::module::CTableParameterItemDelegate* m_pRootItemDelegate;
signals:
void signalOnFinishEditingRowOrCell();
};
/**
* @class SortParamTableWidget
* @brief
*/
class SortParamTableWidget : public CParameterTableWidget
{
Q_OBJECT
public:
SortParamTableWidget(pai::module::CParameterItem* pCompositeItem, QWidget* pParent=0);
virtual ~SortParamTableWidget();
/**
* @brief
* @param[in] pCompositeItem
*/
virtual void SetData(pai::module::CCompositeParameterItem* pCompositeItem);
protected slots:
/**
* @brief
*/
virtual void slotOnAddRow();
/**
* @brief
*/
virtual void slotOnActiveRow();
/**
* @brief CheckBox选中或反选
* @param pCheckItem Checkbox的QTableWidgetItem
*/
virtual void slotOnCheckItem(QTableWidgetItem* pCheckItem);
/**
* @brief Combox选中状态改变消息使cellWidget可用
*/
void slotOnComboxStateChanged();
protected:
/**
* @brief
*/
virtual bool IsKeyValueItem(int row, int column);
};
}
}
#endif