Передо мной стоит задача запихнуть в один виджет 700-900 почти одинаковых виджетов. Соответственно иду по самому простому пути:
1. Создаю QScrollArea *pArea
2. Создаю QWidget *pWidget, кладём в него QVBoxLayout *layout
3. В каком-то сферическом цикле в вакууме добавляем виджеты в *layout
4. pArea->setWidget(pWidget);
5. pArea->show();
Проблема вся в том, что между 4 и 5 действиями проходят нехилые 2 секунды. Это много. По моему скромному мнению, для pWidget вызывается рекурсивный вызов перерисовки всех дочерних виджетов. Как можно обойти данный изъян, перерисовывая, например, только видимые виджеты? Или, может, есть аналогичные QScrollArea виджеты для решения такой задачи?
А без layout как со скоростью? Просто делал что-то похожее, но без layout, рисуя виджеты на pWidget. При этом, конечно, нужно вручную контролировать место рисования виджетов на pWidget. При количестве виджетов порядка 10000 загрузка процессора при прокрутке была 5-7%. Тогда как модели давали 15% загрузки. Что касается времени отображения, то оно практически нулевое, т.к. перерисовываются только отображаемые виджеты.