Russian Qt Forum
Ноябрь 24, 2024, 16:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QScrollArea со множеством виджетов  (Прочитано 9865 раз)
Nimbus
Гость
« Ответ #15 : Декабрь 15, 2011, 12:23 »

скажем так - мне неясно зачем такое, что с ними можно делать (редактировать или нажимать их можно или нельзя), потому мб тебе стоит попробовать всё самому.

GreatSnake плохого не скажет Улыбающийся
Да не важно, считай, что проблема не в этом. Как я понимаю, для редактирования достаточно реализовать метод QStyledItemDelegate::createEditor.
Главное, нарисовать в QPainter виджет. Может стоит посмотреть на какой-нибудь QPixmap::grabWidget?
Записан
BRE
Гость
« Ответ #16 : Декабрь 15, 2011, 12:36 »

Главное, нарисовать в QPainter виджет. Может стоит посмотреть на какой-нибудь QPixmap::grabWidget?
Вообще есть
void QWidget::render ( QPaintDevice * target, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ) )
который все нарисует.
Записан
Командор
Гость
« Ответ #17 : Декабрь 15, 2011, 16:02 »

Передо мной стоит задача запихнуть в один виджет 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% загрузки. Что касается времени отображения, то оно практически нулевое, т.к. перерисовываются только отображаемые виджеты.
Записан
Nimbus
Гость
« Ответ #18 : Декабрь 20, 2011, 05:33 »

Всё-таки остановился на Qt Quick и ихнем Model-View. Гораздо проще реализовать и всё более красиво выглядит
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.