Уменьшение мерцания с помощью QBoxLayout - PullRequest
3 голосов
/ 16 мая 2011

При каждом заполнении отображаемого QBoxLayout на экране появляется мерцание, когда виджеты добавляются в макет.Как мне остановить это мерцание?

setUpdatesEnabled не сработало.

1 Ответ

5 голосов
/ 16 мая 2011

show() виджет только после того, как вы закончили его заполнять / раскладывать.

Или не прикрепляйте свой макет к его виджету, пока вы не добавите к нему что-то. (то есть, звоните setLayout(your_layout) только после того, как вы добавили вещи в your_layout).

Кроме того, обратите внимание на свойство updatesEnabled QWidget. Вы можете использовать это, чтобы временно отключить обновления виджета, чтобы предотвратить мерцание. (Это наиболее полезно для более сложных виджетов, таких как QTableWidget и аналогичных, когда вы вносите «массивные» изменения в базовые данные.)

Цитата из документа выше:

setUpdatesEnabled () обычно используется для отключения обновлений на короткий промежуток времени, например, чтобы избежать мерцания экрана при больших изменениях. В Qt виджеты обычно не генерируют мерцание экрана, но в X11 сервер может стирать области на экране, когда виджеты скрываются, прежде чем их можно будет заменить другими виджетами. Отключение обновлений решает это.

...