QEventLoop Class

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

Header: #include <QEventLoop>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: 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() も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。