class RCStandardItem :public QStandardItem
{
public:
RCStandardItem();
RCStandardItem(const QString &name);
RCStandardItem(const QString &name, const QString &text);
~RCStandardItem();
int type() const;
QString Name() const;
void setName(const QString &Name);
QString OldText() const;
void TextRollBack();
int Role() const;
protected:
void setData(const QVariant & value, int role = Qt::UserRole + 1);
private:
QString _Name;
QString _OldText;
int _Role;
};
#include "RCStandardItem.h"
RCStandardItem::RCStandardItem()
{
this->_Name = "";
this->_OldText = "";
}
RCStandardItem::RCStandardItem(const QString &name)
{
this->_Name = name;
this->_OldText = "";
}
RCStandardItem::RCStandardItem(const QString &name, const QString &text)
{
this->_Name = name;
this->_OldText = "";
this->setText(text);
}
RCStandardItem::~RCStandardItem()
{
}
int RCStandardItem::type() const
{
return QStandardItem::UserType;
}
QString RCStandardItem::Name() const
{
return _Name;
}
void RCStandardItem::setName(const QString &Name)
{
_Name = Name;
}
QString RCStandardItem::OldText() const
{
return _OldText;
}
void RCStandardItem::TextRollBack()
{
this->setText(this->_OldText);
//QVariant v(this->_OldText);
// QStandardItem::setData(v, 2);
}
void RCStandardItem::setData(const QVariant &value, int role)
{
this->_Role = role;
if((role == 0 || role == 2) && value.toString() != this->text())
this->_OldText = this->text();
//qDebug()<<role<<this->text()<<this->_OldText<<value.toString();
QStandardItem::setData(value, role);
}
int RCStandardItem::Role() const
{
return _Role;
}
将使用QStandardItem 替换成这个类来使用就可以了,在setdata方法中可以设置fontground
使用delegate应该也是在setEditorData进行判断的吧