Spec-Zone.ru › Qt

Класс QEventLoop

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

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

Типы публичного доступа

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

Функции публичного доступа

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

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

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

Слот публичного доступа

void exit(int returnCode = 0)
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::exit(int returnCode = 0)

Сообщает циклу обработки событий о завершении с кодом возврата.

После вызова этой функции цикл обработки событий возвращается из вызова exec(). Функция exec() возвращает returnCode.

По соглашению, returnCode равный 0 означает успех, а любое ненулевое значение указывает на ошибку.

Обратите внимание, что в отличие от одноименной функции C-библиотеки, эта функция действительно возвращается вызывающей стороне — останавливается обработка событий.

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

[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().

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().

END_OF_DOCUMENT_MARKER ```

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

Spec-Zone.ru

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