Название: Тормоза QTreeWidget Отправлено: Igors от Декабрь 04, 2018, 07:41 Добрый день
Обычно объем данных мал - и сотки айтемов не будет, поэтому QTreeWidget прекрасно устраивает. Ну конечно унаследовался, обустроился и.т.п. Но вот появилось дерево с объемом поприличнее. Проверил на 12K - дерево заполняется за 6 минут. Не слабо. Ладно, профайлю, показывает что 55% сжирается на, казалось бы, безобидной операции QTreeWidgetItem::selectItem Это грабли известные? Или я что-то делаю не так? Спасибо Название: Re: Тормоза QTreeWidget Отправлено: qate от Декабрь 04, 2018, 14:38 без примера "обустройства" неясно в чем проблема
в обычный QTreeWidget из примера qtbase/examples/xml/rsslisting 12к добавляются менее чем за секунду Название: Re: Тормоза QTreeWidget Отправлено: Igors от Декабрь 04, 2018, 15:21 без примера "обустройства" неясно в чем проблема Обустройство здесь ни при чем, после добавления каждого айтема я делаю item->setSelected(true), ну хочу чтобы вновь добавленные айтемы были выбраны (логично)в обычный QTreeWidget из примера qtbase/examples/xml/rsslisting 12к добавляются менее чем за секунду Название: Re: Тормоза QTreeWidget Отправлено: ViTech от Декабрь 04, 2018, 15:54 Обустройство здесь ни при чем, после добавления каждого айтема я делаю item->setSelected(true), ну хочу чтобы вновь добавленные айтемы были выбраны (логично) Так может их скопом лучше выбирать через QItemSelectionModel::select()? Название: Re: Тормоза QTreeWidget Отправлено: Igors от Декабрь 04, 2018, 16:25 Так может их скопом лучше выбирать через QItemSelectionModel::select()? Смотрел "в эту сторону", но "ни асилил" :) Это ж надо индексы брать, потом все равно их "мерджат" - правда там немало тратится на испускание какого-то сигнала что мне не нужен.Название: Re: Тормоза QTreeWidget Отправлено: Fregloin от Декабрь 04, 2018, 18:06 Без кастомной модели врядли получится грузить большое количество итемов.
По крайней мере здесь уместно QAbstractItemModel::beginResetModel()/endResetModel() Название: Re: Тормоза QTreeWidget Отправлено: Racheengel от Декабрь 04, 2018, 18:38 Известная проблема: https://bugreports.qt.io/browse/QTBUG-60940 , https://bugreports.qt.io/browse/QTBUG-9485
QTreeWidgetItem::selectItem оч. медленннннная. Пишуть, что в 5.11 починили, но хз как на самом деле. Название: Re: Тормоза QTreeWidget Отправлено: ViTech от Декабрь 04, 2018, 19:09 Смотрел "в эту сторону", но "ни асилил" :) Это ж надо индексы брать, потом все равно их "мерджат" - правда там немало тратится на испускание какого-то сигнала что мне не нужен. Получается, что надо самому руками формировать QItemSelection и скармливать его в QItemSelectionModel::select(). При этом, по идее, должно быть одно обновление выделения, а не 12к с событиями и что там ещё попутно обновляется. Название: Re: Тормоза QTreeWidget Отправлено: DarkHobbit от Декабрь 22, 2018, 17:01 QTreeWidget прекрасно устраивает. Извиняюсь, если предлагаю банальщину, которая вам по каким-то причинам не подошла - но я бы в таком случае таки задумался на переходе на QTreeView.... Но вот появилось дерево с объемом поприличнее. |