crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Отображение дерева файловой системы, и подсчет статистики без замираний интрефейса
mezmay
  опции профиля:
сообщение 17.11.2011, 10:59
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Требуется отображать дерево файловой системы, при выделении папки вычислять статистику по ней: количество файлов, общий и средний размер файлов и т.п. Все это должно происходить без замирания интерфейса с отображением статуса операции. Модели QDirModel и QFileSystemModel не позволяют даже просто открыть большую папку без блокировки интерфейса. Как лучше решить задачу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 17.11.2011, 11:36
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


собирать информацию вне gui потока, и возвращать в gui поток только конечные результаты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 17.11.2011, 13:46
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(wiz29 @ 17.11.2011, 13:36) *
обирать информацию вне gui потока,


Очевидно же. А на время работы показать где-нибудь в низу прогресс бар. Если кол-во операций по анализу и подсчету не велико и они не сложны, то не обязательно даже наследоваться от QThread, вполне сгодиться QConcurrent.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mezmay
  опции профиля:
сообщение 17.11.2011, 14:56
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Ну это и ежику понятно что надо в другом потоке считать :)
Только как именно все это реализовать? Я так понимаю надо создать класс модели, унаследованный от QAbstractItemModel. Он должен представлять файловую систему как и QDirModel или QFileSystemModel, но так чтобы при нажатии на плюсик в представлении в моей модели вызывался бы асинхронный метод обработки папки. Как-то так... Как это конкретно сделать? При наследовании от QAbstractItemModel какие методы переопределять и как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 17.11.2011, 15:13
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(mezmay @ 17.11.2011, 13:56) *
Я так понимаю надо создать класс модели, унаследованный от QAbstractItemModel. Он должен представлять файловую систему как и QDirModel или QFileSystemModel, но так чтобы при нажатии на плюсик в представлении в моей модели вызывался бы асинхронный метод обработки папки.

А смысл? Диск то один. Будет ли прирост от использования нескольких потоков?

А то что гуи зависает... хз. Есть много способов: http://doc.qt.nokia.com/qq/qq27-responsive-guis.html

PS: я в этом не силен, но с точки зрения логики...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 29.5.2025, 21:04