Как View обновляется за кулисами? - PullRequest
0 голосов
/ 20 марта 2019

Итак, когда я использую setText () для QLabel, например, Qt автоматически обновляет view / gui для меня, и отображается новый текст, но что происходит за кулисами? Существует ли функция обновления, которая вызывается автоматически при использовании таких функций, как setText ()?

Спасибо !!

1 Ответ

2 голосов
/ 20 марта 2019

Вы должны проверить основную документацию по этой ссылке .

Внутренняя система немного сложнее, но в целом она соответствует схеме наблюдателя. Этот механизм позволяет обнаруживать пользовательское действие или изменение состояния и реагировать на это действие.

Низкоуровневые взаимодействия, такие как обновление экрана, осуществляются через Систему событий

В Qt события - это объекты, производные от абстрактного класса QEvent, которые представляют вещи, которые произошли либо внутри приложения, либо в результате внешней активности, о которой приложение должно знать. События могут быть получены и обработаны любым экземпляром подкласса QObject, но они особенно актуальны для виджетов. Этот документ описывает, как события доставляются и обрабатываются в типичном приложении.

Итак, что касается процесса отображения, есть выделенное событие. Объект QWidget обрабатывает / подписывается на PaintEvent, см. QWidget::paintEvent.

Этот обработчик событий может быть переопределён в подклассе для получения событий рисования, переданных в событии. Событие рисования - это запрос на перерисовку всего или части виджета.

Когда вы звоните, QLineEdit::setText(), виджет будет перерисован при следующем запуске события дисплея, основываясь на конфигурации ОС, частоте обновления и т. Д.

Для взаимодействий высокого уровня Qt использует похожий шаблон, основанный на механизме сигнал / слот :

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

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