Spec-Zone.ru › Qt 5.6

Класс 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)
  • 31 открытая функция унаследована от 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().

См. также 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/archives/qt-5.6/qeventloop.html

Spec-Zone.ru

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