logplus/Workflow/WFWidget/include/PaiTreeItemDelegate.h
2026-01-17 12:55:45 +08:00

155 lines
4.3 KiB
C++
Raw 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 PaiTreeItemDelegate.h
* @brief PAI系统中常见的数据树节点ItemDelegate类
* @date 2011-09-29
*/
#ifndef PAI_FRAME_WIDGET_PAITREEITEMDELEGATE_H
#define PAI_FRAME_WIDGET_PAITREEITEMDELEGATE_H
#include <QStyledItemDelegate>
#include <QRegExp>
#include "Turtle.h"
namespace pai
{
namespace gui
{
/**
* @class PaiTreeItemDelegate
* @brief 参数编辑面板所用的ItemDelegate
*/
class PAI_WIDGET_EXPORT PaiTreeItemDelegate:public QStyledItemDelegate
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param[in] pParent 父类对象指针
*/
PaiTreeItemDelegate(QObject * parent = 0);
protected:
/**
* @brief 获取合适的节点宽高
* @param[in] option 绘制参数
* @param[in] index 树节点索引
* @return 返回合适的节点宽高
*/
virtual QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;
/**
* @brief 重新绘制树节点
* @param[in] pPainter 绘制设备上下文
* @param[in] option 绘制参数
* @param[in] index 树节点索引
*/
virtual void paint(QPainter *pPainter, const QStyleOptionViewItem & option, const QModelIndex & index) const;
};
/**
* @class PaiCagegoryTreeItemDelegate
* @brief 模块管理树所用的ItemDelegate
*/
class PAI_WIDGET_EXPORT PaiCagegoryTreeItemDelegate : public QStyledItemDelegate
{
public:
/**
* @brief 构造函数
* @param[in] pParent 父类对象指针
*/
PaiCagegoryTreeItemDelegate(QObject *pParent = NULL);
/**
* @brief 设置行高
* @param[in] height 行高值
*/
void SetRowHeight(int height);
protected:
/**
* @brief 重新绘制树节点
* @param[in] pPainter 绘制设备上下文
* @param[in] option 绘制参数
* @param[in] index 树节点索引
*/
virtual void paint(QPainter *pPainter, const QStyleOptionViewItem & option, const QModelIndex & index) const;
/**
* @brief 获取合适的节点宽高
* @param[in] option 绘制参数
* @param[in] index 树节点索引
* @return 返回合适的节点宽高
*/
virtual QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;
private:
int m_RowHeight; ///< 行高
};
/**
* @class PaiNameLimitedTreeItemDelegate
* @brief 限定重命名文本内容的TreeItemDelegate
*/
class PAI_WIDGET_EXPORT PaiNameLimitedTreeItemDelegate : public PaiTreeItemDelegate
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param[in] pParent 父窗口句柄
*/
PaiNameLimitedTreeItemDelegate(QWidget *pParent = NULL);
/**
* @brief 构造函数
* @param[in] regExp 对输入作限定的正则表达式
* @param[in] pParent 父窗口句柄
*/
PaiNameLimitedTreeItemDelegate(const QRegExp & regExp, QWidget *pParent = NULL);
/**
* @brief 重写函数返回带输入限定的LineEdit
* @param[in] pParent 父窗口句柄
* @param[in] option 绘制参数
* @param[in] index 树节点索引
*/
virtual QWidget *createEditor(QWidget *pParent, const QStyleOptionViewItem & option, const QModelIndex & index) const;
/**
* @brief 重写函数,设置输入组件的值
* @param[in] pEditor 编辑控件对象
* @param[in] index 树节点索引
*/
virtual void setEditorData(QWidget *pEditor, const QModelIndex & index) const;
/**
* @brief 重写函数将LineEdit数值更新到model不合发则还原至原始值。
* @param[in] pEditor 编辑控件对象
* @param[in] pModel 项目模型
* @param[in] index 树节点索引
*/
virtual void setModelData(QWidget *pEditor, QAbstractItemModel *pModel, const QModelIndex & index) const;
/**
* @brief 重写函数更新LineEdit大小。
* @param[in] pEditor 编辑控件对象
* @param[in] option 绘制参数
* @param[in] index 树节点索引
*/
virtual void updateEditorGeometry(QWidget *pEditor, const QStyleOptionViewItem & option, const QModelIndex & index) const;
private:
QRegExp m_RegExp; ///< 名称限定的正则表达式
signals:
/**
* @brief 当编辑新的名称写入model时释放此信号
* @param[in] index 树节点索引
*/
void ModelDataChanged(const QModelIndex & index) const;
};
}
}
#endif ///< PAI_FRAME_WIDGET_PAITREEITEMDELEGATE_H