logplus/Workflow/WFWidget/include/PaiTreeItemDelegate.h

155 lines
4.3 KiB
C
Raw Permalink Normal View History

2026-01-17 12:55:45 +08:00
/**
* @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