Russian Qt Forum
Августа 27, 2025, 15:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Дерево каталогов и иконка открытой папки  (Прочитано 5121 раз)
Rain
Гость
« : Февраля 16, 2009, 23:20 »

Доброго дня,

На форме нужно отобразить дерево каталогов (файлы отображать не нужно, только каталоги). Для этой цели использую QFileSystemModel и QTreeView.

Код:
fsModel = new QFileSystemModel;
fsModel->setReadOnly(true);
fsModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
fsModel->setRootPath(rootPath);
ui.dirTreeView->setModel(fsModel);
for (int i = 1; i<fsModel->columnCount(); i++)
ui.dirTreeView->setColumnHidden(i, true);

И все вроде бы отлично, но есть два "но". Иконка (папка) выбранного каталога не изменяет свое состояние с закрытой на открытую. В случае если в директории нет вложенных директорий (т.е. по иерархии дальше раскрывать нечего), рядом с папкой все равно висит крестик, нажав на который ничего не происходит.

Вроде бы и мелочи, но как-то не очень красиво. Эти проблемы можно решить малой кровью?

Заранее спасибо, всем ответившим:)
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #1 : Февраля 16, 2009, 23:52 »

Сейчас посмотрел как рисуется пример /examples/itemviews/dirview. Иконка открытой/закрытой директории действительно не меняется. А вот пустые директории определяются сами, и возле них плюсика нет. Использую Qt 4.4.1.

Чтоб твои проблемы решить, видимо нужно переделывать делегата ячейки. Делать это ниразу не пробовал, книжки, ассистент и более опытные товарищи тебе помогут.
Записан

Собираю информацию по крупицам
http://webhamster.ru
Rain
Гость
« Ответ #2 : Февраля 17, 2009, 00:01 »

Сейчас посмотрел как рисуется пример /examples/itemviews/dirview. Иконка открытой/закрытой директории действительно не меняется. А вот пустые директории определяются сами, и возле них плюсика нет. Использую Qt 4.4.1.

Да, но проблема в том, что в моем случае пустые директории это те, которые не содержат вложенных директорий.
У меня стоит фильтр
Код:
fsModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);

Если в папке нет вложенных директорий, но есть файлы - крестик все равно рисуется. Некрасиво.

Чтоб твои проблемы решить, видимо нужно переделывать делегата ячейки.

Спасибо, буду смотреть в эту сторону. Хотя вообще странно, казалось бы такая очевидная функциональность:)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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