Russian Qt Forum
Ноябрь 23, 2024, 19:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: DecorationRole в TreeView  (Прочитано 4833 раз)
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 никогда не отрабатывается. как для индексов модели добавить эту роль?
« Последнее редактирование: Декабрь 07, 2011, 10:16 от deaks » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 07, 2011, 10:18 »

    if (role != Qt::DisplayRole)
        return QVariant();
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
deaks
Гость
« Ответ #2 : Декабрь 07, 2011, 10:20 »

блин, надо же...ужасный копипаст, большое спасибо!
Записан
andrew.k
Гость
« Ответ #3 : Декабрь 07, 2011, 19:30 »

блин, надо же...ужасный копипаст, большое спасибо!
А отладчик на что? ) Сразу бы нашлось.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 23.