Класс QEventLoop
Класс QEventLoop предоставляет средства для входа и выхода из цикла обработки событий. Подробнее...
| Заголовок: | #include <QEventLoop> |
| qmake: | QT += core |
| Наследует: | QObject |
Типы
| Перечисление | ProcessEventsFlag { ВсеСобытия, ИсключениеСобытийПользователя, ИсключениеУведомленийСокетов, ОжиданиеДополнительныхСобытий } |
| флаги | ProcessEventsFlags |
Открытые функции
| QEventLoop(QObject *parent = Q_NULLPTR) | |
| ~QEventLoop() | |
| int | exec(ProcessEventsFlags flags = ВсеСобытия) |
| void | exit(int returnCode = 0) |
| bool | isRunning() const |
| bool | processEvents(ProcessEventsFlags flags = ВсеСобытия) |
| void | processEvents(ProcessEventsFlags flags, int maxTime) |
| void | wakeUp() |
Переопределённые открытые функции
| virtual bool | event(QEvent *event) |
- 32 открытых функции унаследованы от QObject
Открытые слоты
| void | quit() |
- 1 открытый слот унаследован от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 2 сигнала унаследованы от QObject
- 11 статические открытые члены унаследованы от QObject
- 9 защищённые функции унаследованы от QObject
Подробное описание
Класс QEventLoop предоставляет средства для входа и выхода из цикла обработки событий.
В любой момент вы можете создать объект QEventLoop и вызвать exec() на нём, чтобы запустить локальный цикл обработки событий. Изнутри цикла обработки событий, вызов exit() заставит exec() вернуть значение.
См. также QAbstractEventDispatcher.
Документация по типам членов
перечисление QEventLoop::ProcessEventsFlagфлаги QEventLoop::ProcessEventsFlags
Это перечисление управляет типами событий, обрабатываемых функциями processEvents().
| Константа | Значение | Описание |
|---|---|---|
QEventLoop::AllEvents |
0x00 |
Все события. Обратите внимание, что события DeferredDelete обрабатываются особым образом. См. QObject::deleteLater() для получения дополнительной информации. |
QEventLoop::ExcludeUserInputEvents |
0x01 |
Не обрабатывать события пользовательского ввода, такие как ButtonPress и KeyPress. Обратите внимание, что события не отбрасываются; они будут доставлены в следующий раз, когда processEvents() будет вызван без флага ExcludeUserInputEvents. |
QEventLoop::ExcludeSocketNotifiers |
0x02 |
Не обрабатывать события уведомлений сокета. Обратите внимание, что события не отбрасываются; они будут доставлены в следующий раз, когда processEvents() будет вызван без флага ExcludeSocketNotifiers. |
QEventLoop::WaitForMoreEvents |
0x04 |
Ожидать события, если доступных событий нет. |
Тип ProcessEventsFlags является псевдонимом для QFlags<ProcessEventsFlag>. Он хранит логическое ИЛИ сочетание значений ProcessEventsFlag.
См. также processEvents().
Документация по функциям членов
QEventLoop::QEventLoop(QObject *parent = Q_NULLPTR)
Конструирует объект цикла обработки событий с заданным parent.
QEventLoop::~QEventLoop()
Уничтожает объект цикла обработки событий.
[virtual] bool QEventLoop::event(QEvent *event)
Переопределено из QObject::event().
int QEventLoop::exec(ProcessEventsFlags flags = ВсеСобытия)
Входит в основной цикл обработки событий и ожидает, пока не будет вызвано exit(). Возвращает значение, которое было передано в exit().
Если указаны flags, будут обрабатываться только события указанных типов.
Необходимо вызвать эту функцию, чтобы начать обработку событий. Основной цикл обработки событий получает события от системы окон и рассылает их виджетам приложения.
В целом, никакое взаимодействие пользователя не может произойти до вызова exec(). Как особый случай, модальные виджеты, такие как QMessageBox, могут быть использованы до вызова exec(), так как модальные виджеты используют свой собственный локальный цикл обработки событий.
Чтобы заставить ваше приложение выполнять обработку в режиме ожидания (т. е. выполняя специальную функцию всякий раз, когда нет ожидающих событий), используйте QTimer с таймаутом 0. Более сложные схемы обработки в режиме ожидания могут быть достигнуты с помощью processEvents().
См. также QCoreApplication::quit(), exit() и processEvents().
void QEventLoop::exit(int returnCode = 0)
Сообщает циклу обработки событий выйти с кодом возврата.
После вызова этой функции цикл обработки событий возвращается из вызова exec(). Функция exec() возвращает returnCode.
По соглашению, returnCode со значением 0 означает успех, а любое ненулевое значение указывает на ошибку.
Обратите внимание, что в отличие от одноимённой функции библиотеки C, эта функция действительно возвращается вызывающей стороне - останавливается обработка событий.
См. также QCoreApplication::quit(), quit() и exec().
bool QEventLoop::isRunning() const
Возвращает true true, если цикл обработки событий запущен; в противном случае возвращает false. Цикл обработки событий считается запущенным с момента вызова exec() до вызова exit().
bool QEventLoop::processEvents(ProcessEventsFlags flags = ВсеСобытия)
Обрабатывает ожидающие события, соответствующие flags, до тех пор, пока не останется больше событий для обработки. Возвращает true, если ожидающие события были обработаны; в противном случае возвращает false.
Эта функция особенно полезна, если у вас есть длительная операция, и вы хотите показать её ход без блокирования пользовательского ввода; т. е. используя флаг ExcludeUserInputEvents.
Эта функция просто является обёрткой для QAbstractEventDispatcher::processEvents(). См. документацию этой функции для получения подробностей.
void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime)
Обрабатывает ожидающие события, соответствующие flags, в течение максимального времени maxTime миллисекунд или до тех пор, пока больше нет событий для обработки, что произойдёт раньше. Эта функция особенно полезна, если у вас есть длительная операция, и вы хотите показать её ход без блокирования пользовательского ввода, например, используя флаг ExcludeUserInputEvents.
Замечания:
- Эта функция не обрабатывает события непрерывно; она возвращается после обработки всех доступных событий.
- Указание флага WaitForMoreEvents не имеет смысла и будет проигнорировано.
[slot] void QEventLoop::quit()
Заставляет цикл событий выйти нормально.
То же самое, что и exit(0).
См. также QCoreApplication::quit() и exit().
void QEventLoop::wakeUp()
Разбудить цикл событий.
См. также QAbstractEventDispatcher::wakeUp().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qeventloop.html