Название: [РЕШЕНО]Отступ для дочерних ветвей в QTreeView Отправлено: Nemo2000 от Март 09, 2011, 18:44 Необходимо убрать отступ слева для дочерних ветвей в дереве. setIndentation() мало помогает, так как для корневых елеметов отступ должен остаться.
Длительный поиск по инету ничего толкового не дал. Открытых тем довольно много, но конкретных ответов нет.. Перерисовка с помощью drawRow() почему-то не работает, возможно неправильно использую... помогите кто может :-\ Название: Re: Отступ для дочерних ветвей в QTreeView Отправлено: fuCtor от Март 09, 2011, 18:50 Посмотрите в сторону перегрузки и установки делегата (QItemDelegate)
Название: Re: Отступ для дочерних ветвей в QTreeView Отправлено: Nemo2000 от Март 09, 2011, 19:22 А если у меня уже унаследован делегат от QStyledItemDelegate?
там есть метод paint()..но до меня всёравно не доходит как поменять нужную для рисования область ) Название: Re: Отступ для дочерних ветвей в QTreeView Отправлено: fuCtor от Март 09, 2011, 20:38 откройте исходники этого делагата и посмотрите как у них реализовано, потом можно и самому отрисовать как душе угодно.
А в исходниках видим следующее: Код
Для отрисовки использует параметр option, который содержит rect той области где рисовать. Следовательно переопределяем paint, в нем копируем option в новую переменную, сдвигаем область как надо и передаем дальше классу предку. Не проверял, но должно получиться. Можно добиться и большего контроля, если скопировать весь этот процесс и самому заполнить opt для отрисовки. В том числе можно сделать и разного цвета строки и тд и тп на что фантазии хватит. Название: Re: Отступ для дочерних ветвей в QTreeView Отправлено: Nemo2000 от Март 09, 2011, 21:20 Да! :)
Заработало! ;D Так как и говорили, создал копию QStyleOptionViewItem, подредактировал rect и передал дальше классу-предку =) |