Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
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) Link обирать информацию вне 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) Link Я так понимаю надо создать класс модели, унаследованный от QAbstractItemModel. Он должен представлять файловую систему как и QDirModel или QFileSystemModel, но так чтобы при нажатии на плюсик в представлении в моей модели вызывался бы асинхронный метод обработки папки. А смысл? Диск то один. Будет ли прирост от использования нескольких потоков? А то что гуи зависает... хз. Есть много способов: Link PS: я в этом не силен, но с точки зрения логики... |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 1.1.2026, 4:17 |