Spec-Zone.ru › Qt 5.12

Класс 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
  • 32 открытых функции, унаследованные от QObject

Открытые слоты

void quit()
  • 1 открытый слот, унаследованный от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 10 статических открытых членов, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 2 сигналов, унаследованных от 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 = nullptr)

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

[virtual] QEventLoop::~QEventLoop()

Деструктор объекта цикла обработки событий.

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

Переопределено из QObject::event().

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)

Обрабатывает ожидающие события, соответствующие флагам, в течение максимум 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.12/qeventloop.html

Spec-Zone.ru

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