Название: QTableView + QAbstractTableModel + 6000 записей + частые обновления = тормоза Отправлено: Vass от Август 18, 2009, 22:45 Здравствуйте.
В общем проблема такая, пишу что-то типа даунлоад менеджера. Для каждого поставленного в очередь файла создается строка с названием, прогрессбаром, расчетной скоростью и временем до окончания. соответственно информация в строке изменяется часто, когда множество мелких файлов, строки инсертятся и ремувяться очень часто, каждый раз необходимо обновлять виджет. Пока файлов не больше сотни все ок, когда же их ~6000 (тестировал на папке с исходниками буста) гуй начинает жутко тормозить, а точнее просто вешается. Предупреждая вопросы, пробовал вставлять и удалять строки через beginInsertRows/beginRemoveRows, и рефрешить через emit layoutChanged и через reset(). Эффекта нет. Подскажите пожалуйста выход из ситуации. Возможны любые предложения вплоть до ухода от табловиджета, лишь бы не тормозило. Спасибо. Название: Re: QTableView + QAbstractTableModel + 6000 записей + частые обновления = тормоза Отправлено: BRE от Август 18, 2009, 22:52 Так, мысли вслух.
Может стоит обновлять только видимые строки. Название: Re: QTableView + QAbstractTableModel + 6000 записей + частые обновления = тормоза Отправлено: Rcus от Август 18, 2009, 22:52 А профайлер что показывает? Некоторые проблемы с частой отрисовкой решаются ограничением частоты обновлений, проблемы с динамической сортировкой - при помощи таймера. Что за проблема у вас скажет лучше граф профайлера.
Название: Re: QTableView + QAbstractTableModel + 6000 записей + частые обновления = тормоза Отправлено: spectre71 от Август 18, 2009, 23:06 В дополнение:
Если необходимо обновит диапазон ячек в таблице(emit dataChanged), обновляй по циклу, по ячейкам! В текущем QT недоработки, если диапазон не 1 ячека, то обнавляется вся видимая область! Пример: Код
Название: Re: QTableView + QAbstractTableModel + 6000 записей + частые обновления = тормоза Отправлено: Vass от Август 18, 2009, 23:13 Rcus
Профайлером вот сейчас прохожусь, смотрю. Spectre Спасибо за информацию по датачейнджу. |