2016-11-30 16 views
1

я понял exec функции следующего в отношении QApplication в:Что такое цикл событий в Qt?

QApplication Exec начинается основной цикл обработки событий. Он запускает графический интерфейс. Он обрабатывает сигналы и вызывает соответствующие слоты при их получении. Он ожидает выхода вызова и возвращает значение, которое было установлено на выходе.

Теперь, когда мы говорим о цикле событий, означает ли это, что во внутреннем коде Qt работает цикл while, а в этом цикле записывается метод обработки сигналов и слотов?

+1

Контур события означает, что ваш код постоянно работает, думайте об этом как об обновлении каждый раз, так что изменения будут видны и будут постоянно основываться на ваших делах, которые у вас есть. –

+0

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

+0

И сигналы и слоты - это в основном ваш «Если это произойдет», сделайте «это». –

ответ

1

Теперь, когда мы говорим, цикл событий, это значит, что есть некоторое время как цикл работает во внутреннем коде Qt, и в том, что в то время автоматического повтора метод обработки сигналов и слотов написано?

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

Это не относится к Qt. Это общий шаблон дизайна, который вы найдете повсюду от Windows до Android до Arduino.

+7

Это не только «в некотором смысле», это вполне буквально верно. Цикл while можно найти в строке 203 из $ QTDIR/src/corelib/kernel/qeventloop.cpp внутри QEventLoop :: exec(): while (! D-> exit.loadAcquire()) processEvents (flags | WaitForMoreEvents | EventLoopExec); –