Spec-Zone.ru › Qt 5.15

Класс QEventLoop

Класс QEventLoop предоставляет способ входа и выхода из цикла обработки событий. Подробнее...

Заголовок: #include <QEventLoop>
qmake: QT += core
Наследует: QObject
  • Список всех членов, включая унаследованные

Общедоступные типы

Перечисление ProcessEventsFlag { ВсеСобытия, ИсключениеСобытийВводаПользователя, ИсключениеУведомленийСокетов, ОжиданиеДополнительныхСобытий }
флаги ProcessEventsFlags

Общедоступные функции

QEventLoop(QObject *parent = nullptr)
виртуальный ~QEventLoop()
int exec(QEventLoop::ProcessEventsFlags flags = ВсеСобытия)
void exit(int returnCode = 0)
bool isRunning() const
bool processEvents(QEventLoop::ProcessEventsFlags flags = ВсеСобытия)
void processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime)
void wakeUp()

Переопределенные общедоступные функции

виртуальный bool event(QEvent *event) override

Общедоступные слоты

void quit()

Подробное описание

В любой момент вы можете создать объект 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 = nullptr)

Конструирует объект цикла обработки событий с заданным parent.

[slot] void QEventLoop::quit()

Указывает циклу обработки событий на выход в обычном режиме.

То же самое, что и exit(0).

См. также QCoreApplication::quit() и exit().

[virtual] QEventLoop::~QEventLoop()

Уничтожает объект цикла обработки событий.

[override virtual] bool QEventLoop::event(QEvent *event)

Переопределяет: QObject::event(QEvent *e).

int QEventLoop::exec(QEventLoop::ProcessEventsFlags flags = ВсеСобытия)

Входит в основной цикл обработки событий и ожидает, пока не будет вызвано exit(). Возвращает значение, которое было передано в exit().

Если указаны flags, будут обрабатываться только события тех типов, которые разрешены 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 если цикл обработки событий работает; в противном случае возвращает false. Цикл обработки событий считается работающим с момента вызова exec() до вызова exit().

См. также exec() и exit().

bool QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags = ВсеСобытия)

Обрабатывает ожидающие события, соответствующие flags, пока нет больше событий для обработки. Возвращает true если ожидающие события были обработаны; в противном случае возвращает false.

Эта функция особенно полезна, если у вас есть длительная операция, и вы хотите показать ее ход без блокировки ввода пользователя, например, используя флаг ExcludeUserInputEvents.

Эта функция просто является оберткой для QAbstractEventDispatcher::processEvents(). См. документацию этой функции для получения подробной информации.

void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime)

Обрабатывает ожидающие события, соответствующие flags, в течение максимального времени maxTime миллисекунд или до тех пор, пока не будут обработаны все события, в зависимости от того, что произойдет раньше. Эта функция особенно полезна, если у вас есть длительная операция, и вы хотите показать ее ход без блокировки ввода пользователя, например, используя флаг ExcludeUserInputEvents.

Примечания:

  • Эта функция не обрабатывает события непрерывно; она возвращается после обработки всех доступных событий.
  • Указание флага WaitForMoreEvents не имеет смысла и будет проигнорировано.

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.15/qeventloop.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API