QAbstractEventDispatcher Class

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

Header: #include <QAbstractEventDispatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: QObject
Inherited By:

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)

指定されたtimerIdintervaltimerType のタイマーを、指定されたobject に登録する。

この関数は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 struct には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 構造体は、timerIdintervaltimerType メンバを持ちます。

この関数は 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()も参照して ください。

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