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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как изменить цвет текста одного итема в дереве  (Прочитано 2805 раз)
trot
Гость
« : Январь 15, 2011, 13:16 »

Необходимо, в зависимости от какого-то условия, в дереве отображать тексты итемов разными цветами.
Один из вариантов сделать это через делегата переопределив метод paint. Но тут возникает проблема. Устанавливаю цвет пера (QPen) и вызываю базовый метод передав туда painter с новым цветом пера. И в итоге как отображался текст черным, так и отображается, т.е. никаких изменений. Прошелся по коду базового метода и обнаружил, что внутри метода цвет пера устанавливается свой, а не тот который мне нужен. Получается так, что используя базовый метод, нельзя получить желаемого эффекта. Переписать полностью метод paint, ради того чтобы поменять только цвет шрифта, считаю уж слишком затратным.
Подскажите может это все как-то проще решается.
Записан
shirushizo
Гость
« Ответ #1 : Январь 15, 2011, 13:49 »

По идее должно сработать:
Код:
void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
  //проверяем index
  QPallete customPallete;
  //... выставляем что надо
  option.pallete=customPallete;
  QItemDelegate::paint(painter, option, index);
}

А вообще можно в методе data возвращать нужный цвет по Qt::ForegroundRole   или Qt::TextColorRole, скорее всего в виде
qVariantFromValue(QColor(Qt::Green))
« Последнее редактирование: Январь 15, 2011, 13:55 от shirushizo » Записан
trot
Гость
« Ответ #2 : Январь 15, 2011, 14:13 »

Этот вариант тоже рассматривался, но QStyleOptionViewItem &option задан как const и соответственно изменить объект option нельзя.
Записан
shirushizo
Гость
« Ответ #3 : Январь 16, 2011, 10:23 »

Каюсь не заметил, но никто не запрещает сделать копию, изменить ее и передать в метод родителя Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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