Название: QAbstractItemModel, QTreeView и много данных Отправлено: UVV от Декабрь 18, 2009, 11:04 Привет.
Есть модель и treeview. Когда я пытаюсь раскрыть элемент в treeview, который под собой имеет много данных, то приложение зависает минуты на 2-3 со 100%-ой загрузкой процессора, а только потом показывает данные. Что можно сделать в этой ситуации? Пересмотреть алгоритм получения данных в модели, разбить это на потоки или что-то ещё? Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: Vass от Декабрь 18, 2009, 14:58 А данные в модель по раскрытию подгружаются? или модель уже полностью "собрана"?
Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: UVV от Декабрь 18, 2009, 17:23 По раскрытию
Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: Vass от Декабрь 18, 2009, 18:04 Ну тогда очевидно, что время тратиться на извлечение данных и на заполнение модели. У меня была такая беда с многофайловыми папками и стандартными файл и дир моделями, пришлось писать свою, удалось добиться более менее приличной скорости, но в любом случае надо оптимизировать алгоритм выбора данных, можно попробовать вынести в отдельный тред, это как минимум должно избавить от "подвисания" GUI на время создания модели.
Еще вопрос, неужели в одной папке вашего дерева СТОЛЬКО элементов, у меня содержимое реального каталога (т.е. это обращение к диску) с 15-20к файлами занимает 8-15 секунд. Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: UVV от Декабрь 18, 2009, 18:25 1. Насчёт вынести в отдельный тред - в принципе так и собирался. Оптимизировать алгоритм вывода - тут надо будет подумать ;)
2. Сейчас проверил: ~24000 элемента - около 40 секунд. Это не дисковая операция. Файл с этими данными занимает чуть больше 2 мегабайт. Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: Vass от Декабрь 18, 2009, 19:13 Может покажете код модели?
Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: BlackTass от Декабрь 18, 2009, 19:18 Еще можно прогнать профайлером и посмотреть что же так много ест.
Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: GNU Dimarik от Декабрь 20, 2009, 03:08 имхо нужно инициализировать модель заранее.Если данных много разберись с
bool QAbstractItemModel::canFetchMore ( const QModelIndex & parent ) const и void QAbstractItemModel::fetchMore ( const QModelIndex & parent ) где то в Qt demo был пример вроде,не помню,но кажется я там научился.Посмотри у себя Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: UVV от Декабрь 23, 2009, 05:08 имхо нужно инициализировать модель заранее.Если данных много разберись с bool QAbstractItemModel::canFetchMore ( const QModelIndex & parent ) const и void QAbstractItemModel::fetchMore ( const QModelIndex & parent ) где то в Qt demo был пример вроде,не помню,но кажется я там научился.Посмотри у себя Да, спасибо, это направление устраивает больше всего. Название: Re: QAbstractItemModel, QTreeView и много данных Отправлено: UVV от Декабрь 23, 2009, 05:09 Может покажете код модели? Во-первых, он большой. Во-вторых, лучше не надо ;) По лицензионным причинам. |