![]() |
|
![]() ![]() ![]() |
|
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
[QT]
Забыл указать в названии темы, что речь о Qt 5.4. Товарищи, прошу помощи. Есть комбобокс, в котором выбирается диск (по нему отдельные вопросы, но он худо бедно работает), далее задача состоит в том, что в параллельном потоке "построить" "модель" файловой системы и отобразить её treeview, но при этом ещё нужно отображать прогресс этого процесса. Простроить и модель пишу в кавычках, т.к. подход может быть любым. Работу с потоками я кое как освоил, но вот понять, как получить прогресс построения дерева стандартными средствами, я не могу. Я рассматривал два варианта - первый на базе QFileSystemModel. То есть создать модель, задать ей индекс и корневой элемент выбранным диском, подписаться на сигнал directoryLoaded и.. дальше не понятно. Модель подгружает директории по одной, по мере выбора их пользователем, видимо при, помощи fetchMore, но как вмешаться в этот процесс я не вижу. Может такой вариант есть и вы подскажете. Второй вариант делать свою модель, но пока мне это кажется очень сложным и опять же кажется что есть путь полегче. Может использовать наследование от стандартных моделей, может делать "модель" на базе map или что-то в таком духе. Правда потом не понятно, как заполнять получившимся "деревом" treeview, может использовать другой виджет для отображения дерева.. В общем прошу помочь советом/идеями/ссылками/примерами кода. Заранее спасибо. Это сообщение отредактировал(а) NoviceF - 25.7.2015, 20:33 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Модель придётся делать настоящую - в Qt иначе нельзя.
При использовании QTreeWidget тоже используется стандартная модель, но она скрыта от пользователя.
Все "видимо" уйдут, если посмотрите исходники QFileSystemModel. Зачем вмешиваться в этот процесс - смысла не вижу, разве что по умолчанию он будет происходить в основном потоке, а Вам нужно в своём. Если хотите писать свою модель, исходники QFileSystemModel тоже помогут. Возможно, достаточно написать прокси-модель, использующую QFileSystemModel - подобные примеры идут с Qt, но без использования потоков. |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
Хм, вот об этом и не подумал, хотя примеры похожие попадались. Меня посещали мысли при выборе диска проходит его корень, писать всё в какой-нибудь map (в этом случае понятно как оценить прогресс), но если пользователь пойдёт "в глубь" диска, то при открытии каждой новой папки, нужно будет добавлять её в этот map и поддерживать всё это дерево в адекватном состоянии, что уже напоминает собственно модель.. Видимо придётся разбираться с моделями.. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |