Otro delegado para la columna de edad. En este caso la idea es usar expresiones regulares para limitar la entrada a números y además colorear las celdas en función de la edad:
 
midelegado2.cpp    
Código C++:
Ver original- #include "midelegado2.h" 
-   
- #include <QLineEdit> 
- #include <QRegExpValidator> 
- #include <QPainter> 
-   
- MiDelegado2::MiDelegado2(QWidget *parent) : QStyledItemDelegate(parent) {} 
-   
- QWidget * MiDelegado2::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const 
- { 
-     Q_UNUSED (index); 
-     Q_UNUSED (option); 
-     QLineEdit* miEditor = new QLineEdit(parent); 
-     QRegExpValidator* validadorEdad = new QRegExpValidator(QRegExp("[0-9]{1,2}"),miEditor); 
-     miEditor->setValidator(validadorEdad); 
-     return miEditor; 
- } 
-   
- void MiDelegado2::setEditorData ( QWidget * editor, const QModelIndex & index ) const 
- { 
-     QLineEdit* miEditor = static_cast<QLineEdit*>(editor); 
-     miEditor->setText(QString::number(index.data().toInt())); 
- } 
-   
- void MiDelegado2::setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const 
- { 
-     QLineEdit* miEditor = static_cast<QLineEdit*>(editor); 
-     model->setData(index,miEditor->text()); 
- } 
-   
- void MiDelegado2::updateEditorGeometry ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const 
- { 
-     Q_UNUSED (index); 
-     editor->setGeometry(option.rect); 
- } 
-   
- void MiDelegado2::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const 
- { 
-     QColor colorInfantil(Qt::green); 
-     QColor colorMadurez(Qt::yellow); 
-     QColor colorVejez(Qt::red); 
-     painter->save(); 
-     if (index.data().toInt()>=0 && index.data().toInt()<25) 
-     { 
-         painter->fillRect(option.rect,colorInfantil); 
-     } 
-     else if (index.data().toInt()>=25 && index.data().toInt()<65) 
-     { 
-         painter->fillRect(option.rect,colorMadurez); 
-     } 
-     else if (index.data().toInt()>=65) 
-     { 
-         painter->fillRect(option.rect,colorVejez); 
-     } 
-     QPen colorTexto(Qt::black); 
-     painter->setPen(colorTexto); 
-     painter->drawText(option.rect,Qt::AlignCenter,index.data().toString()); 
-     painter->restore(); 
- } 
Y por último, para ensayar con el tema de ver la información en forma de iconos, tengo un campo de estado de ánimo. Y este es el que no funciona: 
midelegado3.cpp    
Código C++:
Ver original- #include "midelegado3.h" 
- #include <QComboBox> 
- #include <QLabel> 
- #include <QDebug> 
-   
-   
- MiDelegado3::MiDelegado3(QWidget *parent) : QStyledItemDelegate(parent) {} 
-   
- QWidget* MiDelegado3::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const 
- { 
-     Q_UNUSED (index); 
-     Q_UNUSED (option); 
-     QComboBox* miCombo = new QComboBox(parent); 
-     QIcon icono1, icono2, icono3; 
-     icono1.addFile(QStringLiteral(":/iconos/alegre.png"), QSize(), QIcon::Normal, QIcon::Off); 
-     miCombo->addItem(icono1, "Alegre"); 
-     icono2.addFile(QStringLiteral(":/iconos/serio.png"), QSize(), QIcon::Normal, QIcon::Off); 
-     miCombo->addItem(icono2, "Serio"); 
-     icono3.addFile(QStringLiteral(":/iconos/triste.png"), QSize(), QIcon::Normal, QIcon::Off); 
-     miCombo->addItem(icono3, "Triste"); 
-     return miCombo; 
- } 
-   
- void MiDelegado3::setEditorData (QWidget * editor, const QModelIndex & index) const 
- { 
-     QComboBox* miEditor = static_cast<QComboBox*>(editor); 
-   
-     switch (index.data().toInt()) 
-     { 
-     case 0: 
-     { 
-   
-         //model->setData( index, miEditor->currentIndex( ) ); 
-         //otro->setPixmap(QPixmap(QString::fromUtf8(":/iconos/alegre.png"))); 
-         break; 
-     } 
-     case 1: 
-     { 
-         //miEditor->setPixmap(QPixmap(QString::fromUtf8(":/iconos/serio.png"))); 
-         break; 
-     } 
-     case 2: 
-     { 
-         //miEditor->setPixmap(QPixmap(QString::fromUtf8(":/iconos/triste.png"))); 
-         break; 
-     } 
-     default: 
-         break; 
-     } 
- } 
-   
- void MiDelegado3::setModelData (QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const 
- { 
-     QComboBox* miCombo = static_cast<QComboBox*>(editor); 
-     model->setData(index,miCombo->currentIndex()); 
- } 
(sigue)