155 lines
4.3 KiB
C++
155 lines
4.3 KiB
C++
/**
|
||
* @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
|