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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Отступ для дочерних ветвей в QTreeView  (Прочитано 3761 раз)
Nemo2000
Гость
« : Март 09, 2011, 18:44 »

Необходимо убрать отступ слева для дочерних ветвей в дереве. setIndentation() мало помогает, так как для корневых елеметов отступ должен остаться.
Длительный поиск по инету ничего толкового не дал. Открытых тем довольно много, но конкретных ответов нет..
Перерисовка с помощью drawRow() почему-то не работает, возможно неправильно использую...
помогите кто может В замешательстве
« Последнее редактирование: Март 09, 2011, 22:33 от _Nemo_ » Записан
fuCtor
Гость
« Ответ #1 : Март 09, 2011, 18:50 »

Посмотрите в сторону перегрузки и установки делегата (QItemDelegate)
Записан
Nemo2000
Гость
« Ответ #2 : Март 09, 2011, 19:22 »

А если у меня уже унаследован делегат от QStyledItemDelegate?
там есть метод paint()..но до меня всёравно не доходит как поменять нужную для рисования область )
Записан
fuCtor
Гость
« Ответ #3 : Март 09, 2011, 20:38 »

откройте исходники этого делагата и посмотрите как у них реализовано, потом можно и самому отрисовать как душе угодно.

А в исходниках видим следующее:
Код
C++ (Qt)
void QStyledItemDelegate::paint(QPainter *painter,
       const QStyleOptionViewItem &option, const QModelIndex &index) const
{
   Q_ASSERT(index.isValid());
 
   QStyleOptionViewItemV4 opt = option;
   initStyleOption(&opt, index);
 
   const QWidget *widget = QStyledItemDelegatePrivate::widget(option);
   QStyle *style = widget ? widget->style() : QApplication::style();
   style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget);
}

Для отрисовки использует параметр option, который содержит rect той области где рисовать. Следовательно переопределяем paint, в нем копируем option в новую переменную, сдвигаем область как надо и передаем дальше классу предку. Не проверял, но должно получиться. Можно добиться и большего контроля, если скопировать весь этот процесс и самому заполнить opt для отрисовки. В том числе можно сделать и разного цвета строки и тд и тп на что фантазии хватит.
Записан
Nemo2000
Гость
« Ответ #4 : Март 09, 2011, 21:20 »

Да! Улыбающийся
Заработало! Смеющийся
Так как и говорили, создал копию QStyleOptionViewItem, подредактировал rect и передал дальше классу-предку =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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