LINUX.ORG.RU

[Qt][QWidget][scroll(x,y)] когда

 ,


0

1

есть наследник QWidget с нетривиальной отрисовкой без буфера.

пытаюсь использовать .scroll(x,y) для плавного скролла.

проблема в том, что похоже, что сам процесс копирования изображения как-то откладывается системой, в связи с чем при частом вызове процесса скроллирования происходит порча изображения - как будьто само копирование старого изображения происходит уже после того как отработал .paintEvent для освободившейся части, и если вызвать в это время новый scroll, то на экран копируется сразу 2 старых изображения. Пытался исключить начало нового скроллирования перед отработкой paintEvent, инициированного вызовом scroll, используя переменную класса - без толку.

Вопрос - можно ли как-то узнать, когда старый scroll отработал и можно безопасно вызывать новый? или лучше его вообще не использовать для виджетов?


если говорить конкретно про то что ты спросил, то всё можно, только делается это по другому, в момент когда попадаешь стопаешь все отрисовки и рисуешь текущую, это называется clapping

а вообще запили себе double buffering и не парься

shty ★★★★★
()

Со скроллом у меня кроме всего прочего возникали проблемы из-за медленной работы, плавного скролла на отдельных старых девайсах так добиться и не удалось.
Выход нашел в определении своей переменной скрола и отрисовке содержимого виджета самостоятельно в paintEvent. Использовал какой-то из классов для прокрутки на Symbian. Его точно можно найти на Qt.Labs

trex6 ★★★★★
()
Ответ на: комментарий от shty

а что - вход возможен из разных тредов? разве оно не в одном треде работает (если самому не создавать треды) ?

olegsov
() автор топика
Ответ на: комментарий от olegsov

а что - вход возможен из разных тредов? разве оно не в одном треде работает (если самому не создавать треды) ?

у тебя user input прилетает асинхронно? асинхронно, и на каждый scroll дёргается paintEvent, что будет происходить, если до того как один отрисовался другой уже прилетел? правильно, выпадения кадров и фризы

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.