Название: Разные стили для разных строк в QTreeView Отправлено: Nemo2000 от Март 07, 2011, 18:04 Имеется QTreeView. Нужно парные его строки зарисовать в один цвет, а непарные в другой.
Стиль задаю с помощью setStyleSheet(). Примером может послужить стандартный PropertyEditor в Qt Creator. Там в строках чередуются зелёный и жёлтый цвета. Собственно вся проблема :) Название: Re: Разные стили для разных строк в QTreeView Отправлено: JamS007 от Март 07, 2011, 19:05 QTreeView::alternatingRowColors : bool
Более просто этого не сделать. Если нужно 3 и более цвета - придеться работать с моделью. Название: Re: Разные стили для разных строк в QTreeView Отправлено: Nemo2000 от Март 09, 2011, 19:35 да,видимо,придётся с моделью посидеть..
Тогда ещё вопрос. Если задавать цвет для итема то заливается не вся строка, а только та часть где текст. Выходит некрасиво. Можно дорисовать фон в методе paintEvent, но есть проблема с определением строки, в какой нужно рисовать. Есть ли какой-то хороший способ для этого? Название: Re: Разные стили для разных строк в QTreeView Отправлено: JamS007 от Март 09, 2011, 23:54 Цитировать Если задавать цвет для итема то заливается не вся строка, а только та часть где текст. Не знаю как ты задаешь цвет для item'a. Вообще, если не приходиться часто менять фон item'a то лучше присвоить ему фон прямо в модели, не играясь с делегатами, хотя, это - дело вкуса.Я например делаю так: Код
* - Вместо 255 указывай нужные параметры цвета (красный, зеленый, синий, альфа-канал). *1 - Цвет фона. *2 - Цвет текста. Название: Re: Разные стили для разных строк в QTreeView Отправлено: Nemo2000 от Март 10, 2011, 00:04 Ну я возвращал нужные цвета с метода data() с модели. Закрашивало ступеньками так как для дочерних item'ов отступы есть. И эти отступы не закрашивались.
Проблему уже решил переопределив метод drawRow для QTreeView. :) Название: Re: Разные стили для разных строк в QTreeView Отправлено: fuCtor от Март 10, 2011, 07:34 А можно было ввсе в томже делегате, который делали для уборки отступов, сделать и закрашивание, чтобы собрать все в одном месте.
|