QAbstractEventDispatcher Class

QAbstractEventDispatcher クラスは、Qt のイベントキューを管理するためのインターフェイスを提供します。詳細...

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

QAbstractEventDispatcherV2

パブリック・タイプ

パブリック関数

QAbstractEventDispatcher(QObject *parent = nullptr)
virtual ~QAbstractEventDispatcher()
bool filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
virtual void interrupt() = 0
virtual bool processEvents(QEventLoop::ProcessEventsFlags flags) = 0
virtual void registerSocketNotifier(QSocketNotifier *notifier) = 0
(since 6.8) void registerTimer(Qt::TimerId timerId, QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
virtual void registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object) = 0
(since 6.8) Qt::TimerId registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
virtual QList<QAbstractEventDispatcher::TimerInfo> registeredTimers(QObject *object) const = 0
virtual int remainingTime(int timerId) = 0
QAbstractEventDispatcher::Duration remainingTime(Qt::TimerId timerId) const
void removeNativeEventFilter(QAbstractNativeEventFilter *filter)
(since 6.8) QList<QAbstractEventDispatcher::TimerInfoV2> timersForObject(QObject *object) const
virtual void unregisterSocketNotifier(QSocketNotifier *notifier) = 0
(since 6.8) bool unregisterTimer(Qt::TimerId timerId)
virtual bool unregisterTimer(int timerId) = 0
virtual bool unregisterTimers(QObject *object) = 0
virtual void wakeUp() = 0

シグナル

void aboutToBlock()
void awake()

静的パブリック・メンバー

QAbstractEventDispatcher *instance(QThread *thread = nullptr)

詳細説明

イベントディスパッチャはウィンドウシステムやその他のソースからイベントを受け取ります。そして、それらをQCoreApplication またはQApplication インスタンスに送り、処理と配信を行います。QAbstractEventDispatcherは、イベント配信のきめ細かい制御を提供します。

イベント処理をシンプルに制御するには、QCoreApplication::processEvents ()を使用します。

アプリケーションのイベント・ループをより細かく制御するには、instance ()を呼び出し、返されたQAbstractEventDispatcherオブジェクトの関数を呼び出します。QAbstractEventDispatcher の独自のインスタンスや QAbstractEventDispatcher のサブクラスを使用する場合は、デフォルトのイベント・ディスパッチャがインストールされる前にQCoreApplication::setEventDispatcher() またはQThread::setEventDispatcher() を使用してインストールする必要があります。

メイン・イベント・ループは、QCoreApplication::exec ()を呼び出すことで開始し、QCoreApplication::exit ()を呼び出すことで停止します。ローカル・イベント・ループは、QEventLoop を使用して作成できます。

長いオペレーションを実行するプログラムは、QEventLoop::ProcessEventsFlag のさまざまな値のビット OR の組み合わせでprocessEvents() を呼び出し、どのイベントを配信するかを制御できます。

QAbstractEventDispatcher では、外部のイベントループと Qt のイベントループを統合することもできます。

QEventLoopQCoreApplicationQThreadも参照してください

メンバ型ドキュメント

[alias] QAbstractEventDispatcher::Duration

このクラスの様々な API で使用されるstd::chrono::duration 型。この型は、上位または下位の粒度への移行を容易にするために存在する。

現在のすべてのプラットフォームでは、nanoseconds

メンバ関数ドキュメント

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

与えられたparent で新しいイベントディスパッチャを構築する。

[virtual noexcept] QAbstractEventDispatcher::~QAbstractEventDispatcher()

イベント・ディスパッチャを破棄する。

[signal] void QAbstractEventDispatcher::aboutToBlock()

このシグナルは、イベントループがブロックする可能性のある関数を呼び出す前に発せられる。

awake()も参照

[signal] void QAbstractEventDispatcher::awake()

このシグナルは、イベントループがブロック可能な関数から戻った後に発せられる。

wakeUp() およびaboutToBlock()も参照の こと。

bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)

installNativeEventFilter() によって設定されたイベントフィルターを通してmessage を送る。この関数は、イベント・フィルタがtrue を返すとすぐにtrue を返し、そうでない場合はイベントの処理を続行する必要があることを示すために false を返す。

QAbstractEventDispatcher のサブクラスは、アプリケーションで使用される可能性のある拡張との互換性 を確保するために、システムから受信したすべてのメッセージに対してこの関数を呼 び出さなければならない。イベント・タイプeventType は、実行時に選択されるプラットフォーム・プラ グインに固有であり、メッセージを適切なタイプにキャストするために使用できま す。result ポインタは Windows でのみ使用され、LRESULT ポインタに対応する。

message の型はプラットフォーム依存であることに注意。詳細はQAbstractNativeEventFilter を参照。

installNativeEventFilter() およびQAbstractNativeEventFilter::nativeEventFilter()も参照の こと。

void QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

アプリケーションによって受信されるすべてのネイティブ・イベントに対して、イベント・フィルタfilterObj をインストールする。

イベント・フィルターfilterObj は、nativeEventFilter() 関数を介してイベントを受け取ります。この関数は、すべてのスレッドによって受け取られるすべてのイベントに対して呼び出されます。

nativeEventFilter() 関数は、イベントをフィルタリングする必要がある場合、true を返す必要があります(この場合は停止)。ネイティブイベントはQEvent に変換され、標準の Qtevent フィルタリング、例えばQObject::installEventFilter() で処理されます。

複数のイベントフィルターがインストールされている場合、最後にインストールされたフィルターが最初に有効になります。

注意: ここで設定されたフィルター関数は、ネイティブ・メッセージ、つまり MSG または XEvent 構造体を受け取ります。

移植性を最大にするために、可能な限り常にQEvent オブジェクトとQObject::installEventFilter() を使用するようにしてください。

QObject::installEventFilter()も参照のこと

[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)

指定されたthread のイベント・ディスパッチャ・オブジェクトへのポインタを返す。threadnullptr の場合、現在のスレッドが使用される。指定されたスレッドのイベント・ディスパッチャが存在しない場合、この関数はnullptr を返します。

注意:Qt がスレッドサポートなしでビルドされている場合、thread 引数は無視されます。

[pure virtual] void QAbstractEventDispatcher::interrupt()

イベント・ディスパッチャを中断する。イベント・ディスパッチャはprocessEvents() からできるだけ早く戻ります。

[pure virtual] bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)

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

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

flagsQEventLoop::WaitForMoreEvents フラグが設定されている場合、この関数の動作は以下のようになる:

  • イベントが利用可能な場合、この関数はそれらを処理した後に戻る。
  • 利用可能なイベントがない場合、この関数は利用可能なイベントが増えるまで待機し、新たに利用可能になったイベントを処理した後に戻ります。

flagsQEventLoop::WaitForMoreEvents フラグが設定されておらず、利用可能なイベントがない場合、この関数は即座に戻ります。

注:この関数はイベントを連続的に処理するのではなく、利用可能なイベントをすべて処理した後に戻ります。

[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)

notifier をイベントループに登録する。ソケット通知器を別のイベントループに結びつけるには、サブクラスはこのメソッドを実装しなければならない。

[since 6.8] void QAbstractEventDispatcher::registerTimer(Qt::TimerId timerId, QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)

与えられたobject に対して、指定されたtimerIdintervaltimerType でタイマーを登録します。

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

unregisterTimer() およびtimersForObject()も参照してください

[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object)

与えられたobject に対して、指定されたtimerIdintervaltimerType でタイマーを登録する。

[since 6.8] Qt::TimerId QAbstractEventDispatcher::registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)

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

指定されたobject に対して、指定されたintervaltimerType でタイマーを登録し、タイマー ID を返します。

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

[pure virtual] QList<QAbstractEventDispatcher::TimerInfo> QAbstractEventDispatcher::registeredTimers(QObject *object) const

object の登録済みタイマーのリストを返す。TimerInfo 構造体はtimerIdintervaltimerType のメンバを持つ。

Qt::TimerTypeも参照のこと

[pure virtual] int QAbstractEventDispatcher::remainingTime(int timerId)

与えられたtimerId の残り時間をミリ秒単位で返す。タイマーが非アクティブの場合、返される値は -1 となります。 タイマーが時間超過の場合、返される値は 0 となります。

Qt::TimerTypeも参照のこと

QAbstractEventDispatcher::Duration QAbstractEventDispatcher::remainingTime(Qt::TimerId timerId) const

与えられたtimerId のタイマーの残り時間を返す。タイマーが非アクティブの場合、返される値は負になる。タイマーの残り時間が超過している場合、返される値は 0 になります。

Qt::TimerTyperegisterTimer()、unregisterTimer()も参照

void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)

このオブジェクトからイベントフィルターfilter を削除する。そのようなイベントフィルターがインストールされていない場合、リクエストは無視されます。

このオブジェクトのすべてのイベントフィルターは、このオブジェクトが破棄されるときに自動的に削除される。

イベント・フィルタの起動中であっても(つまり、nativeEventFilter ()関数の中であっても)、イベント・フィルタを削除することは常に安全である。

installNativeEventFilter() およびQAbstractNativeEventFilterも参照

[since 6.8] QList<QAbstractEventDispatcher::TimerInfoV2> QAbstractEventDispatcher::timersForObject(QObject *object) const

object の登録済みタイマーのリストを返す。TimerInfoV2 構造体にはtimerId,interval,timerType のメンバがあります。

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

Qt::TimerType,registerTimer(),unregisterTimer()も参照してください

[pure virtual] void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)

イベントディスパッチャからnotifier の登録を解除する。サブクラスは、ソケット通知器を別のイベントループに結びつけるために、このメソッドを再実装しなければならない。再実装は基本実装を呼び出す必要がある。

[since 6.8] bool QAbstractEventDispatcher::unregisterTimer(Qt::TimerId timerId)

与えられたtimerId のタイマーの登録を解除する。成功すればtrue を返し、そうでなければfalse を返します。

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

registerTimer() およびunregisterTimers()も参照してください

[pure virtual] bool QAbstractEventDispatcher::unregisterTimer(int timerId)

与えられたtimerId のタイマーの登録を解除する。成功すればtrue を返し、そうでなければfalse を返す。

registerTimer() およびunregisterTimers()も参照のこと

[pure virtual] bool QAbstractEventDispatcher::unregisterTimers(QObject *object)

与えられたobject に関連するすべてのタイマーの登録を解除する。すべてのタイマーの削除に成功した場合はtrue を返し、そうでない場合はfalse を返す。

unregisterTimer() およびregisteredTimers()も参照のこと

[pure virtual] void QAbstractEventDispatcher::wakeUp()

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

注意:この関数はスレッドセーフである。

awake()も参照のこと

© 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.