| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Подсчёт времени построения дерева каталогов. |
| Автор: NoviceF 24.7.2015, 20:37 |
| [QT] Забыл указать в названии темы, что речь о Qt 5.4. Товарищи, прошу помощи. Есть комбобокс, в котором выбирается диск (по нему отдельные вопросы, но он худо бедно работает), далее задача состоит в том, что в параллельном потоке "построить" "модель" файловой системы и отобразить её treeview, но при этом ещё нужно отображать прогресс этого процесса. Простроить и модель пишу в кавычках, т.к. подход может быть любым. Работу с потоками я кое как освоил, но вот понять, как получить прогресс построения дерева стандартными средствами, я не могу. Я рассматривал два варианта - первый на базе QFileSystemModel. То есть создать модель, задать ей индекс и корневой элемент выбранным диском, подписаться на сигнал directoryLoaded и.. дальше не понятно. Модель подгружает директории по одной, по мере выбора их пользователем, видимо при, помощи fetchMore, но как вмешаться в этот процесс я не вижу. Может такой вариант есть и вы подскажете. Второй вариант делать свою модель, но пока мне это кажется очень сложным и опять же кажется что есть путь полегче. Может использовать наследование от стандартных моделей, может делать "модель" на базе map или что-то в таком духе. Правда потом не понятно, как заполнять получившимся "деревом" treeview, может использовать другой виджет для отображения дерева.. В общем прошу помочь советом/идеями/ссылками/примерами кода. Заранее спасибо. |
| Автор: NoviceF 27.7.2015, 09:14 |
Хм, вот об этом и не подумал, хотя примеры похожие попадались. Меня посещали мысли при выборе диска проходит его корень, писать всё в какой-нибудь map (в этом случае понятно как оценить прогресс), но если пользователь пойдёт "в глубь" диска, то при открытии каждой новой папки, нужно будет добавлять её в этот map и поддерживать всё это дерево в адекватном состоянии, что уже напоминает собственно модель.. Видимо придётся разбираться с моделями.. |