QEventLoop Class

QEventLoopクラスは、イベント・ループに入ったり出たりする手段を提供します。詳細...

ヘッダー #include <QEventLoop>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承: QObject

パブリックな型

enum ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents }
flags ProcessEventsFlags

パブリック関数

QEventLoop(QObject *parent = nullptr)
virtual ~QEventLoop()
int exec(QEventLoop::ProcessEventsFlags flags = AllEvents)
bool isRunning() const
bool processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents)
(since 6.7) void processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)
void processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime)
void wakeUp()

再実装されたパブリック関数

virtual bool event(QEvent *event) override

パブリックスロット

void exit(int returnCode = 0)
void quit()

詳細説明

いつでも QEventLoop オブジェクトを作成し、exec() を呼び出すことで、ローカル・イベント・ループを開始することができます。イベント・ループ内でexit() を呼び出すと、exec() が強制的に戻ります。

QAbstractEventDispatcherも参照してください

メンバ型ドキュメント

enum QEventLoop::ProcessEventsFlag
flags QEventLoop::ProcessEventsFlags

この enum は、processEvents() 関数によって処理されるイベントのタイプを制御します。

定数説明
QEventLoop::AllEvents0x00すべてのイベント。DeferredDelete イベントは特別に処理されることに注意。詳細はQObject::deleteLater() を参照してください。
QEventLoop::ExcludeUserInputEvents0x01ButtonPressやKeyPressなどのユーザー入力イベントは処理しません。これらのイベントは破棄されず、次回processEvents() が ExcludeUserInputEvents フラグなしで呼び出されたときに配信される。
QEventLoop::ExcludeSocketNotifiers0x02ソケット通知イベントを処理しない。イベントは破棄されず、次回processEvents() が ExcludeSocketNotifiers フラグなしで呼び出されたときに配信される。
QEventLoop::WaitForMoreEvents0x04保留中のイベントがない場合は、イベントを待つ。

ProcessEventsFlags型はQFlags<ProcessEventsFlag>のtypedefである。これは、ProcessEventsFlagの値のORの組み合わせを格納する。

processEvents()も参照

メンバー関数ドキュメント

[explicit] QEventLoop::QEventLoop(QObject *parent = nullptr)

与えられたparent でイベントループオブジェクトを構築する。

[virtual noexcept] QEventLoop::~QEventLoop()

イベント・ループ・オブジェクトを破棄する。

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

再インプリメント:QObject::event(QEvent *e).

int QEventLoop::exec(QEventLoop::ProcessEventsFlags flags = AllEvents)

メイン・イベント・ループに入り、exit ()が呼び出されるまで待機する。exit() に渡された値を返す。

flags が指定されている場合、flags で許可されているタイプのイベントのみが処理される。

イベント処理を開始するには、この関数を呼び出す必要がある。メイン・イベント・ループは、ウィンドウ・システムからイベントを受け取り、アプリケーション・ウィジェットにディスパッチします。

一般的に言って、exec()を呼び出す前にユーザーとのインタラクションを行うことはできません。特別なケースとして、QMessageBox のようなモーダルウィジェットは exec() を呼び出す前に使用することができます。モーダルウィジェットはそれ自身のローカルイベントループを使用するからです。

アプリケーションにアイドル処理(保留中のイベントがないときに特別な関数を実行する)を実行させるには、0nsタイムアウトのQChronoTimer 。より洗練されたアイドル処理スキームは、processEvents() を使って実現できる。

QCoreApplication::quit()、exit()、processEvents()も参照の こと。

[slot] void QEventLoop::exit(int returnCode = 0)

リターン・コードでイベント・ループを終了する。

この関数が呼び出された後、イベントループはexec() の呼び出しから戻る。exec() 関数はreturnCode を返す。

慣例により、returnCode の 0 は成功を意味し、0 以外の値はエラーを示す。

同名の C ライブラリ関数とは異なり、この関数は呼び出し元に戻る

QCoreApplication::quit()、quit()、exec()も参照のこと

bool QEventLoop::isRunning() const

イベント・ループが実行中であればtrue を返し、そうでなければ false を返す。イベント・ループが実行中とみなされるのは、exec() がコールされてからexit() がコールされるまでの間である。

exec() およびexit()も参照

bool QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents)

flags にマッチする保留中のイベントを処理する。保留中のイベントが処理された場合はtrue を返し、そうでない場合はfalse を返す。

この関数は、長時間実行される処理があり、ユーザー入力を許可せずにその進行状況を表示したい場合、つまりExcludeUserInputEvents フラグを使用する場合に特に有用である。

この関数は、単にQAbstractEventDispatcher::processEvents() のラッパーである。詳細については、この関数のドキュメントを参照してください。

[since 6.7] void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)

deadline の有効期限が切れるまで、または処理するイベントがなくなるまで、flags にマッチする保留中のイベントを処理する。この関数は、長時間実行されるオペレーションがあり、その進捗状況をユーザー入力を許可せずに表示したい場合、つまり、ExcludeUserInputEvents フラグを使用する場合に特に便利です。

注意

  • この関数は連続的にイベントを処理するのではなく、利用可能なイベントがすべて処理された後に返されます。
  • WaitForMoreEvents フラグを指定しても意味がなく、無視されます。

この関数は Qt 6.7 で導入されました。

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

これはオーバーロードされた関数である。

flags にマッチする保留中のイベントを、最大maxTime ミリ秒、または処理するイベントがなくなるまで、いずれか短い方の時間処理する。

呼び出しに相当する:

processEvents(flags, QDeadlineTimer(maxTime));

[slot] void QEventLoop::quit()

イベントループを正常に終了させる。

exit(0) と同じ。

QCoreApplication::quit() およびexit()も参照の こと。

void QEventLoop::wakeUp()

イベントループを起動する。

QAbstractEventDispatcher::wakeUp()も参照のこと

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.