Название: Плохая перерисовска полупрозрачного виджета Отправлено: xokc от Январь 23, 2010, 22:46 Есть виджет, служащий фоном, на котором в бесконечном цикле прокручивается картинка. Поверх этого виджета располагается другой полупрозрачный виджет (назовем его маркер), сквозь который видно, как эта фоновая картинка крутится. Этот маркер можно двигать с помощью мышки и клавиатуры. Так вот, при перемещении маркера он отрисовывает сначала кусок фона с предыдущего места, и только через некоторое время вновь становится полупрозрачным. Как бы от этого эффекта избавиться?
P.S. Qt 4.6.1, MSVC, WinXP SP3 Название: Re: Плохая перерисовска полупрозрачного виджета Отправлено: lit-uriy от Январь 23, 2010, 22:49 код не смотрел, может дело в том, что при перемещении перерисовка происходит с некой задержкой?
Т.е. вызывается update(), который может накапливать события, вместо их немедленной обработки. Или, учитывая наличие бесконечного цикла работы с картинкой, на событие перерисовки отводится не достаточно времени, т.е. они выполняются редко. Название: Re: Плохая перерисовска полупрозрачного виджета Отправлено: xokc от Январь 23, 2010, 23:00 Остановил скроллинг. Стало еще интереснее - при перемещении маркера фон просто трется и не перерисывывается, а под маркером остается тот кусок фона, который был при создании маркера.
Фоновый виджет отрисовывается следующим образом: Код: void Waterfall::paintEvent(QPaintEvent *event) Код: void SpecMarker::paintEvent(QPaintEvent * /*event*/) Код: setStyleSheet("background-color: rgba(85, 192, 0, 64);"); Название: Re: Плохая перерисовска полупрозрачного виджета Отправлено: BRE от Январь 23, 2010, 23:05 Код
Название: Re: Плохая перерисовска полупрозрачного виджета Отправлено: xokc от Январь 23, 2010, 23:34 Спасибо. Заработало - скопировал кусок кода с другого варианта реализации и замыленный глаз этого куска упорно не замечал.
|