Russian Qt Forum

Qt => Model-View (MV) => Тема начата: voltron от Декабрь 12, 2009, 16:03



Название: Дерево папок с чекбоксами. Как лучше сделать?
Отправлено: voltron от Декабрь 12, 2009, 16:03
Необходимо отображать в программе дерево папок (файлы отображать не надо) с чекбоксами возле каждого элемента. Потом из отмеченных папок будут загружаться и обрабатываться файлы определенного типа.
Поискал по форуму, нашел несколько похожих тем, но так и не понял что лучше: использовать QDirModel или создавать свою модель? Какие преимущества и недостатки у каждого метода?


Название: Re: Дерево папок с чекбоксами. Как лучше сделать?
Отправлено: break от Декабрь 13, 2009, 03:15
если получится использовать QDirModel (мне не требовалось делать чекбоксы во вьюхе с ней) - то большим преимуществом будет скорость разработки - не надо писать свою модель кот. будет обходить рекурсивно каталоги, игнорировать "." и ".." обрабатывать символические ссылки и т.д. и к тому же быть кросплатформенной - я бы все таки на чал с QDirModel.


Название: Re: Дерево папок с чекбоксами. Как лучше сделать?
Отправлено: lit-uriy от Декабрь 13, 2009, 04:51
>>я бы все таки на чал с QDirModel.
+100
Модель можно потом, одним движением руки поменять, когда будет на что.


Название: Re: Дерево папок с чекбоксами. Как лучше сделать?
Отправлено: voltron от Декабрь 13, 2009, 12:55
Спасибо за ответы. Буду пробовать прикрутить QDirModel


Название: Re: Дерево папок с чекбоксами. Как лучше сделать?
Отправлено: Dendy от Декабрь 13, 2009, 16:50
Если и использовать стандартную модель, я бы выбрал QFileSystemModel, пришедшую на замену QDirModel. По крайней мере она кеширует данные и выбирает их с файловой системы в другом потоке.


Название: Re: Дерево папок с чекбоксами. Как лучше сделать?
Отправлено: voltron от Декабрь 14, 2009, 09:37
С QDirModel получилось: отнаследовался от нее, переопределил flags, data и setData. Чекбоксы рисуются, галки снимать/ставить можно. Но появилось еще два вопроса.
1. Сортировка элементов регистрозависимая - сначала идут папки, начинающиеся в заглавной буквы, а после них - со строчной. Чтобы получить регистронезависимую сортировку надо использовать прокси-модель, правильно?
2. Если папку отметить (поставить галку в чекбокс), то выделится только эта папка, вложенные останутся не выделенными. Что надо подкрутить, чтобы при выделении элемента все дочерние элементы тоже выделялись?

Dendy, спасибо. Попробую еще QFileSystemModel. Насколько понимаю, принцип остается тем же - переопределяются flags, data и setData.