Когда вызывать update () для виджетов? - PullRequest
2 голосов
/ 19 сентября 2011

Когда необходимо вызывать метод update () ?

Должен ли я вообще звонить?

Все, что я делаю с моими виджетами: setGeometry () и повышение () .

1 Ответ

3 голосов
/ 19 сентября 2011

setGeometry() и raise() должны автоматически вызывать paintEvent для соответствующих виджетов.

Я думаю, что большинство собственных виджетов Qt при необходимости вызывают update(). В пользовательских виджетах вы вызываете update() всякий раз, когда что-то видимое меняется. Например, если у вас есть собственный класс Label (который не наследуется от QLabel и, следовательно, не использует возможности QLabel для изменения текста и / или изображения), вы вызываете update() всякий раз, когда вы меняете содержимое, так что новый контент будет отображаться на экране.

Осторожно: вы не должны использовать repaint() для виджетов, если перерисовка не является критичной по времени. repaint() вызывает выдачу paintEvent виджету в тот момент, когда он вызывается, тогда как update() просто ставит в очередь paintEvent для выдачи в следующий раз, когда процесс достигает основного цикла. Это позволяет движку рисования собирать несколько paintEvent с для одного и того же виджета и выдавать только одно объединенное событие. Таким образом, использование repaint() может реально повлиять на производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...