Доброе утро!
Не могу понять в чем загвоздка или я что-то не понимаю в работе с ролями в моделях.
Создал модель, унаследованную от
QAbstractItemModel. В ней естественно переопределяю
->data():
C++ (Qt)
QVariant FOMTreeModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole)
return QVariant();
FOMTreeItem *item = static_cast<FOMTreeItem*>(index.internalPointer());
IXMLNode *node = static_cast<IXMLNode*>(item->data());
QVariant data;
switch(role)
{
case Qt::EditRole:
case Qt::DisplayRole:
{
if(index.column() == 0)
{
IXMLAttributes *attr = node->attributes();
QString name;
attr->get("name", name);
data = QVariant(name);
}
if(index.column() == 1)
data = QVariant(node->name());
break;
}
case Qt::DecorationRole:
{
QPixmap pixmap(16, 16);
pixmap.fill(QColor(255, 0, 0));
data = QVariant::fromValue(pixmap);
break;
}
default:
{
data = QVariant();
break;
}
}
return data;
}
но в итоге
DecorationRole никогда не отрабатывается. как для индексов модели добавить эту роль?