Russian Qt Forum
Ноябрь 01, 2024, 13:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
QAbstractItemModel, QTreeView и много данных
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QAbstractItemModel, QTreeView и много данных (Прочитано 6024 раз)
UVV
Гость
QAbstractItemModel, QTreeView и много данных
«
:
Декабрь 18, 2009, 11:04 »
Привет.
Есть модель и treeview.
Когда я пытаюсь раскрыть элемент в treeview, который под собой имеет много данных, то приложение зависает минуты на 2-3 со 100%-ой загрузкой процессора, а только потом показывает данные.
Что можно сделать в этой ситуации?
Пересмотреть алгоритм получения данных в модели, разбить это на потоки или что-то ещё?
Записан
Vass
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #1 :
Декабрь 18, 2009, 14:58 »
А данные в модель по раскрытию подгружаются? или модель уже полностью "собрана"?
Записан
UVV
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #2 :
Декабрь 18, 2009, 17:23 »
По раскрытию
Записан
Vass
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #3 :
Декабрь 18, 2009, 18:04 »
Ну тогда очевидно, что время тратиться на извлечение данных и на заполнение модели. У меня была такая беда с многофайловыми папками и стандартными файл и дир моделями, пришлось писать свою, удалось добиться более менее приличной скорости, но в любом случае надо оптимизировать алгоритм выбора данных, можно попробовать вынести в отдельный тред, это как минимум должно избавить от "подвисания" GUI на время создания модели.
Еще вопрос, неужели в одной папке вашего дерева СТОЛЬКО элементов, у меня содержимое реального каталога (т.е. это обращение к диску) с 15-20к файлами занимает 8-15 секунд.
Записан
UVV
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #4 :
Декабрь 18, 2009, 18:25 »
1. Насчёт вынести в отдельный тред - в принципе так и собирался. Оптимизировать алгоритм вывода - тут надо будет подумать
2. Сейчас проверил: ~24000 элемента - около 40 секунд. Это не дисковая операция. Файл с этими данными занимает чуть больше 2 мегабайт.
Записан
Vass
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #5 :
Декабрь 18, 2009, 19:13 »
Может покажете код модели?
Записан
BlackTass
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #6 :
Декабрь 18, 2009, 19:18 »
Еще можно прогнать профайлером и посмотреть что же так много ест.
Записан
GNU Dimarik
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #7 :
Декабрь 20, 2009, 03:08 »
имхо нужно инициализировать модель заранее.Если данных много разберись с
bool QAbstractItemModel::canFetchMore ( const QModelIndex & parent ) const
и
void QAbstractItemModel::fetchMore ( const QModelIndex & parent )
где то в Qt demo был пример вроде,не помню,но кажется я там научился.Посмотри у себя
Записан
UVV
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #8 :
Декабрь 23, 2009, 05:08 »
Цитата: GNU Dimarik от Декабрь 20, 2009, 03:08
имхо нужно инициализировать модель заранее.Если данных много разберись с
bool QAbstractItemModel::canFetchMore ( const QModelIndex & parent ) const
и
void QAbstractItemModel::fetchMore ( const QModelIndex & parent )
где то в Qt demo был пример вроде,не помню,но кажется я там научился.Посмотри у себя
Да, спасибо, это направление устраивает больше всего.
Записан
UVV
Гость
Re: QAbstractItemModel, QTreeView и много данных
«
Ответ #9 :
Декабрь 23, 2009, 05:09 »
Цитата: Vass от Декабрь 18, 2009, 19:13
Может покажете код модели?
Во-первых, он большой. Во-вторых, лучше не надо
По лицензионным причинам.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...