Russian Qt Forum

Qt => Model-View (MV) => Тема начата: deaks от Декабрь 07, 2011, 10:07



Название: DecorationRole в TreeView
Отправлено: deaks от Декабрь 07, 2011, 10:07
Доброе утро!

Не могу понять в чем загвоздка или я что-то не понимаю в работе с ролями в моделях.
Создал модель, унаследованную от 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 никогда не отрабатывается. как для индексов модели добавить эту роль?


Название: Re: DecorationRole в TreeView
Отправлено: Пантер от Декабрь 07, 2011, 10:18
    if (role != Qt::DisplayRole)
        return QVariant();


Название: Re: DecorationRole в TreeView
Отправлено: deaks от Декабрь 07, 2011, 10:20
блин, надо же...ужасный копипаст, большое спасибо!


Название: Re: DecorationRole в TreeView
Отправлено: andrew.k от Декабрь 07, 2011, 19:30
блин, надо же...ужасный копипаст, большое спасибо!
А отладчик на что? ) Сразу бы нашлось.