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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeView::expandAll/collapseAll(const QModelIndex& index)  (Прочитано 2875 раз)
Akon
Гость
« : Июль 09, 2012, 09:33 »

QTreeView имеет функции expandAll()/collapseAll() (без параметров), которые разворачивают/сворачивают все объекты. Необходимо выполнить эти действия для конкретного объекта. Что-то не вижу этого функционала в QTreeView, а он, имхо, очень востребован. Может полохо смотрю?

Решение в лоб - написать рекурсивную функцию с использованием QTreeView::expand/collapse(const QModelIndex& index), но, думаю, это грубо (в каждом вызове expand/collapse всякие релейауты), на больших объемах, полагаю, будут тормоза.

Какое эффективное решение знаете?

Впрочем, по нажатию "*" идет разворот именно через expand().
« Последнее редактирование: Июль 09, 2012, 10:02 от Akon » Записан
evgeniy
Гость
« Ответ #1 : Апрель 12, 2014, 14:08 »

Код:
void MainWindow::expandNode(const QModelIndex &parentIndex, bool expand) {
  tree->setExpanded(parentIndex, expand);
  for (qint32 rowNum = 0; rowNum < treeModel->rowCount(parentIndex); ++rowNum) {
    QModelIndex childIndex = treeModel->index(rowNum, 0, parentIndex);
    tree->setExpanded(childIndex, expand);
    expandNode(childIndex);
  }
}
« Последнее редактирование: Апрель 12, 2014, 16:21 от evgeniy » Записан
Akon
Гость
« Ответ #2 : Апрель 19, 2014, 15:57 »

Цитировать
Решение в лоб - написать рекурсивную функцию с использованием QTreeView::expand/collapse(const QModelIndex& index)
Вы его и привели.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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