Spec-Zone.ru › Qt 6.1

Класс QEventLoop

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

Заголовок: #include <QEventLoop>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы public

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

Функции public

QEventLoop(QObject *parent = nullptr)
virtual ~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()

Переопределенные функции public

virtual bool event(QEvent *event) override

Свойства public

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.

Эта функция особенно полезна, если у вас есть длительная операция, и вы хотите показать ее прогресс, не разрешая пользовательский ввод; т.е. используя флаг ИсключениеСобытийПользовательскогоВвода.

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

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

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

Примечания:

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

void QEventLoop::wakeUp()

Разбуждает цикл обработки событий.

См. также QAbstractEventDispatcher::wakeUp().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qeventloop.html

Spec-Zone.ru

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