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 |
パブリックスロット
詳細説明
いつでも QEventLoop オブジェクトを作成し、exec() を呼び出すことで、ローカル・イベント・ループを開始することができます。イベント・ループ内でexit() を呼び出すと、exec() が強制的に戻ります。
QAbstractEventDispatcherも参照してください 。
メンバ型ドキュメント
enum QEventLoop::ProcessEventsFlag
flags QEventLoop::ProcessEventsFlags
この enum は、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>の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() がコールされるまでの間である。
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。