LINUX.ORG.RU

QTreeView: отображение в состоянии expanded

 ,


0

1

Добрый день,

Кто-нибудь знает, каким образом можно сделать так, чтобы QTreeView отображался развёрнутым?

Сделал развёртывание узлов через делегат, но, кажется, это не верный путь - плывут индексы в proxy-модели.

Как вариант - таймер, но неужели нельзя как-то проще?..

★★

Можно переопределить в потомке QTreeView функцию rowsInserted и раскрывать все нужные индексы по мере добавления там. Хотя я не уверен, поможет ли это решить проблему с proxy.

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от m0rph

Да, работает. Но в первоначальном состоянии, когда MyTreeView только отрисовалась, список свёрнут. Далее, когда фильтрация через proxy запускается, rowsInserted отрабатывает. В чём затык?

i82 ★★
() автор топика
Ответ на: комментарий от grondek

А как вставку отследить? Данные в модель поступают, далее через proxy во вьюху поступают... setItemsExpandable(false) - это понятно.

i82 ★★
() автор топика
Ответ на: комментарий от grondek

Да, работает. Но опять почему-то первоначальное состояние MyTreeView - схлопнутое и слот этот дёргается только при первой попытке что-то ввести в фильтр proxy-модели.

i82 ★★
() автор топика
Ответ на: комментарий от grondek

Думаю, что да. Если правильно понял. Я создаю MyTreeView + в нём внутри proxy. Далее, делаю myTreeView->setModel(model) и ставлю там proxy->setSourceModel(model). Соответственно, до этой операции в моей модели данные уже есть...

i82 ★★
() автор топика
Ответ на: комментарий от grondek

С этим ясно, спасибо. А что будет если буду setExpanded() в row-делегате делать? Это вообще хорошая практика, или нет?

i82 ★★
() автор топика
Ответ на: комментарий от i82

Я создаю MyTreeView + в нём внутри proxy.

Какой-то винегрет. Разнеси их по разным местам, она не должна быть внутри.

UVV ★★★★★
()
Ответ на: комментарий от UVV

Винегрет? Наверное. Я полагал, что внутри MyTreeView удобно хранить финальную фильтрующую модель QSortFilterProxyModel, осуществляющую фильтрацию по RegExp. Почему это плохо?

i82 ★★
() автор топика
Ответ на: комментарий от i82

Сущности должны как можно больше быть самостоятельными. Если завтра тебе понадобится доступ к твоей фильтрующей модели, то метод getMyFilterModel() у твоего MyTreeView только добавит говнокода. У view есть метод setModel(), вот через него и передавай твою QSortFilterProxyModel.

UVV ★★★★★
()
Ответ на: комментарий от i82

Да, пиши чо. По моему имени можешь найти меня.

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.