Russian Qt Forum
Ноябрь 22, 2024, 23:42
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Тормоза QTreeWidget
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Тормоза QTreeWidget (Прочитано 6273 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Тормоза QTreeWidget
«
:
Декабрь 04, 2018, 07:41 »
Добрый день
Обычно объем данных мал - и сотки айтемов не будет, поэтому QTreeWidget прекрасно устраивает. Ну конечно унаследовался, обустроился и.т.п. Но вот появилось дерево с объемом поприличнее. Проверил на 12K - дерево заполняется за 6 минут. Не слабо. Ладно, профайлю, показывает что 55% сжирается на, казалось бы, безобидной операции QTreeWidgetItem::selectItem
Это грабли известные? Или я что-то делаю не так?
Спасибо
Записан
qate
Супер
Offline
Сообщений: 1177
Re: Тормоза QTreeWidget
«
Ответ #1 :
Декабрь 04, 2018, 14:38 »
без примера "обустройства" неясно в чем проблема
в обычный QTreeWidget из примера qtbase/examples/xml/rsslisting 12к добавляются менее чем за секунду
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Тормоза QTreeWidget
«
Ответ #2 :
Декабрь 04, 2018, 15:21 »
Цитата: qate от Декабрь 04, 2018, 14:38
без примера "обустройства" неясно в чем проблема
в обычный QTreeWidget из примера qtbase/examples/xml/rsslisting 12к добавляются менее чем за секунду
Обустройство здесь ни при чем, после добавления каждого айтема я делаю item->setSelected(true), ну хочу чтобы вновь добавленные айтемы были выбраны (логично)
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Тормоза QTreeWidget
«
Ответ #3 :
Декабрь 04, 2018, 15:54 »
Цитата: Igors от Декабрь 04, 2018, 15:21
Обустройство здесь ни при чем, после добавления каждого айтема я делаю item->setSelected(true), ну хочу чтобы вновь добавленные айтемы были выбраны (логично)
Так может их скопом лучше выбирать через QItemSelectionModel::select()?
Записан
Пока сам не сделаешь...
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Тормоза QTreeWidget
«
Ответ #4 :
Декабрь 04, 2018, 16:25 »
Цитата: ViTech от Декабрь 04, 2018, 15:54
Так может их скопом лучше выбирать через QItemSelectionModel::select()?
Смотрел "в эту сторону", но "ни асилил"
Это ж надо индексы брать, потом все равно их "мерджат" - правда там немало тратится на испускание какого-то сигнала что мне не нужен.
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Тормоза QTreeWidget
«
Ответ #5 :
Декабрь 04, 2018, 18:06 »
Без кастомной модели врядли получится грузить большое количество итемов.
По крайней мере здесь уместно QAbstractItemModel::beginResetModel()/endResetModel()
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Тормоза QTreeWidget
«
Ответ #6 :
Декабрь 04, 2018, 18:38 »
Известная проблема:
https://bugreports.qt.io/browse/QTBUG-60940
,
https://bugreports.qt.io/browse/QTBUG-9485
QTreeWidgetItem::selectItem оч. медленннннная. Пишуть, что в 5.11 починили, но хз как на самом деле.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Тормоза QTreeWidget
«
Ответ #7 :
Декабрь 04, 2018, 19:09 »
Цитата: Igors от Декабрь 04, 2018, 16:25
Смотрел "в эту сторону", но "ни асилил"
Это ж надо индексы брать, потом все равно их "мерджат" - правда там немало тратится на испускание какого-то сигнала что мне не нужен.
Получается, что надо самому руками формировать QItemSelection и скармливать его в QItemSelectionModel::select(). При этом, по идее, должно быть одно обновление выделения, а не 12к с событиями и что там ещё попутно обновляется.
Записан
Пока сам не сделаешь...
DarkHobbit
Самовар
Offline
Сообщений: 197
Re: Тормоза QTreeWidget
«
Ответ #8 :
Декабрь 22, 2018, 17:01 »
Цитата: Igors от Декабрь 04, 2018, 07:41
QTreeWidget прекрасно устраивает.
...
Но вот появилось дерево с объемом поприличнее.
Извиняюсь, если предлагаю банальщину, которая вам по каким-то причинам не подошла - но я бы в таком случае таки задумался на переходе на QTreeView.
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...