Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ksk- от Июль 27, 2018, 08:38



Название: Как делать виджеты неивдимыми по мере скроллинга?
Отправлено: ksk- от Июль 27, 2018, 08:38
Всем привет. Ситуация следующая: Есть QScrollArea, в ней довольно большое число виджетов, в каждом из которых происходит весьма интенсивная и дорогая движуха. Разумно прекращать эту движуху пока виджет невидим. Теперь вопрос: Можно ли как-то явно сделать виджет невидимым после того, как он был целиком и полностью спрятан по мере скроллинга?


Вариант с заменой ScrollArea на что-то более подходящее нежелателен, но допустим.


Название: Re: Как делать виджеты неивдимыми по мере скроллинга?
Отправлено: Пантер от Июль 27, 2018, 10:56
А разве нельзя реагировать на отсутствие paintEvent?


Название: Re: Как делать виджеты неивдимыми по мере скроллинга?
Отправлено: ksk- от Июль 27, 2018, 12:34
Можно попробовать. Но как зафиксировать сам факт отсутствия paintEvent?


Название: Re: Как делать виджеты неивдимыми по мере скроллинга?
Отправлено: Old от Июль 27, 2018, 12:45
А я бы смотрел на обратный вариант: при любом изменении положения видимой области ScrollArea пробегался по всем дочерним виджетам и говорил им виден он или нет.


Название: Re: Как делать виджеты неивдимыми по мере скроллинга?
Отправлено: ksk- от Июль 31, 2018, 07:18
А я бы смотрел на обратный вариант: при любом изменении положения видимой области ScrollArea пробегался по всем дочерним виджетам и говорил им виден он или нет.

Это решение оказалось наиболее простым. Спасибо. ) Только явно виджеты лучше не скрывать, ибо они так и останутся скрытыми. Лучше просто останавливать отрисовку у виджета.


Название: Re: Как делать виджеты неивдимыми по мере скроллинга?
Отправлено: Old от Июль 31, 2018, 07:54
Только явно виджеты лучше не скрывать, ибо они так и останутся скрытыми. Лучше просто останавливать отрисовку у виджета.
Я и не предлагал их скрывать/показывать, я предлагал их уведомлять, тогда каждый виджет сможет выполнить необходимые для семя действия в зависимости от своей видимости.