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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Разные стили для разных строк в QTreeView  (Прочитано 6807 раз)
Nemo2000
Гость
« : Март 07, 2011, 18:04 »

Имеется QTreeView.  Нужно парные его строки зарисовать в один цвет, а непарные в другой.
Стиль задаю с помощью setStyleSheet(). Примером может послужить стандартный PropertyEditor в Qt Creator. Там в строках чередуются зелёный и жёлтый цвета.
Собственно вся проблема Улыбающийся
Записан
JamS007
Гость
« Ответ #1 : Март 07, 2011, 19:05 »

QTreeView::alternatingRowColors : bool

Более просто этого не сделать. Если нужно 3 и более цвета - придеться работать с моделью.
« Последнее редактирование: Март 07, 2011, 19:10 от HaySayCheese » Записан
Nemo2000
Гость
« Ответ #2 : Март 09, 2011, 19:35 »

да,видимо,придётся с моделью посидеть..

Тогда ещё вопрос. Если задавать цвет для итема то заливается не вся строка, а только та часть где текст. Выходит некрасиво.
Можно дорисовать фон в методе paintEvent, но есть проблема с определением строки, в какой нужно рисовать. Есть ли какой-то хороший способ для этого?
Записан
JamS007
Гость
« Ответ #3 : Март 09, 2011, 23:54 »

Цитировать
Если задавать цвет для итема то заливается не вся строка, а только та часть где текст.
Не знаю как ты задаешь цвет для item'a. Вообще, если не приходиться часто менять фон item'a то лучше присвоить ему фон прямо в модели, не играясь с делегатами, хотя, это - дело вкуса.

Я например делаю так:

Код
C++ (Qt)
QBrush backgroundColor(QColor(255,255,255,255)); //*
 
QStandardItem *item = myModel.item(row, column);
if (item){
   item->setData(backgroundColor, Qt::BackgroundRole); //*1
   item->setData(backgroundColor, Qt::ForegroundRole); //*2
}

* - Вместо 255 указывай нужные параметры цвета (красный, зеленый, синий, альфа-канал).
*1 - Цвет фона.
*2 - Цвет текста.
Записан
Nemo2000
Гость
« Ответ #4 : Март 10, 2011, 00:04 »

Ну я возвращал нужные цвета с метода data() с модели. Закрашивало ступеньками так как для дочерних item'ов отступы есть. И эти отступы не закрашивались.
Проблему уже решил переопределив метод drawRow для QTreeView. Улыбающийся
Записан
fuCtor
Гость
« Ответ #5 : Март 10, 2011, 07:34 »

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


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