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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как раскрасить ветки в QTreeView?  (Прочитано 7425 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Август 30, 2008, 23:40 »

Возник вопрос - как раскрасить ветки в QTreeView? Нужен хоть какой механизм - от возможности вывода текста ветки в гипертекстовой разметке (сейчас - разметка лезет в текст ветки) до установки какого-то свойства конкретному item-у.

Куды копать надо? Поискал, внятного ответа не нашел. Вроде как народ пользуется paintCell(), но этот механизм работает в Qt3 а не в Qt4, и к тому же для объекта TreeView такой метод вообще не определен, только для ListView.

Кто что может посоветовать?
Записан

Собираю информацию по крупицам
http://webhamster.ru
spirit
Гость
« Ответ #1 : Август 31, 2008, 11:23 »

делегат можно свой сделать, там-то есть метод
Код:
void QItemDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const   [virtual]
а вот еще статейка по делегатам, должна помочь разобраться с делегатами
http://doc.trolltech.com/qq/qq24-delegates.html
Записан
EhTemka
Гость
« Ответ #2 : Сентябрь 01, 2008, 15:05 »

Если тебе просто раскрасить надо, есть еще роли в модели, такие как Qt::BackgroundRole и  Qt::ForegroundRole. При заполнении модели задаешь цвет итема с их помощью
например :
Код:
QAbstractItemModel::setData(index, QColor(Qt::red), Qt::BackgroundRole);
QAbstractItemModel::setData(index, QColor(Qt::green), Qt::ForegroundRole);
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #3 : Сентябрь 07, 2008, 21:50 »

Если тебе просто раскрасить надо, есть еще роли в модели, такие как Qt::BackgroundRole и  Qt::ForegroundRole. При заполнении модели задаешь цвет итема с их помощью

Да, спасибо, я именно так и сделал.
Это гораздо прощще чем с делегатами работать. Улыбающийся
Записан

Собираю информацию по крупицам
http://webhamster.ru
kadr
Гость
« Ответ #4 : Сентябрь 17, 2010, 14:11 »

Народ, если используется не QAbstractItemModel а QFileSystemModel, то  
QFileSystemModel::setData(index, QColor(Qt::red), Qt::BackgroundRole);
QFileSystemModel::setData(index, QColor(Qt::green), Qt::ForegroundRole);
не катят, ничего не происходит! Может подскажите как поменять цвет текста в итеме?
Записан
Kolobok
Гость
« Ответ #5 : Сентябрь 17, 2010, 14:53 »

QFileSystemModel::setData() обрабатывает только Qt::EditRole. Поэтому или наследоваться или делегата писать.

offtop
kadr, у меня твой аватар всегда в offline. Перезалей куда-нибудь, а то страницы, где ты пишешь, долго грузятся.
Записан
kadr
Гость
« Ответ #6 : Октябрь 01, 2010, 09:15 »

Ну а вообще есть метод попроще, для QFileSystemModel?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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