У меня есть QLabel
, используемый для отображения изображений, отображаемых poppler. Рендеринг и рисование выполняется внутри paintEvent()
. Например, когда пользователь взаимодействует с пользовательским интерфейсом (например, масштабирование или прокрутка) или когда файл PDF изменяется, программа обновляет внутренние данные, если это необходимо, и затем вызывает update
, чтобы обновить представление. Используя внутренние данные, paintEvent()
просит poppler визуализировать правильное изображение, а затем рисует.
Теперь Попплеру может потребоваться некоторое время для рендеринга изображения. Более того, перед вызовом paintEvent()
qt всегда стирайте все это. В результате, например, при обновлении файла PDF (что мне особенно интересно), дисплей мерцает.
Мой вопрос: как мне устранить это мерцание? Как я могу сказать qt не стирать или, по крайней мере, не стирать, пока страница не будет отображена в памяти?
Я пытался setAttribute(Qt::WA_OpaquePaintEvent)
и setAutoFillBackground(false)
на своем QLabel
, но это не решило проблему. Я также попытался окружить свои звонки на update()
между setUpdatesEnabled(false)
и setUpdatesEnabled(true)
. Наконец, я попытался поместить setUpdatesEnabled(false/true)
внутри самого paintEvent
, но это привело к бесконечному циклу paintEvent
.
Спасибо!