QAbstractNativeEventFilter Class
QAbstractNativeEventFilter クラスは、MSG や XCB イベント構造体のようなネイティブ・イベントを受け取るためのインタフェースを提供します。詳細...
ヘッダ | #include <QAbstractNativeEventFilter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
パブリック関数
QAbstractNativeEventFilter() | |
virtual | ~QAbstractNativeEventFilter() |
virtual bool | nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) = 0 |
メンバ関数の説明
QAbstractNativeEventFilter::QAbstractNativeEventFilter()
ネイティブ・イベント・フィルターを作成します。
デフォルトでは何もしません。アプリケーション・オブジェクトにインストールすることを忘れないでください。
[virtual noexcept]
QAbstractNativeEventFilter::~QAbstractNativeEventFilter()
ネイティブ・イベント・フィルターを破棄する。
これは自動的にアプリケーションから削除されます。
[pure virtual]
bool QAbstractNativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result)
このメソッドは、ネイティブ・イベントごとに呼び出される。
注意: ここでの filter 関数は、MSG や XCB イベント構造体などのネイティブ メッセージを受け取ります。
この関数は QPA プ ラ ッ ト フ ォーム プ ラ グ イ ンか ら 呼び出 さ れます。Windows では、イベント ディスパッチャによって呼び出されます。
イ ベン トeventType の型は、 実行時に選択 さ れ る プ ラ ッ ト フ ォーム プ ラ グ イ ンに固有であ り 、message を適切な型にキ ャ ス ト す る ために使用で き ます。
X11では、eventType は "xcb_generic_event_t "に設定され、message は xcb_generic_event_tポインタにキャストされる。
Windowsでは、eventType は、トップレベル・ウィンドウに送られるメッセージには "windows_generic_MSG "に設定され、登録されたホットキーからのメッセージのようなシステム全体のメッセージには "windows_dispatcher_MSG "に設定される。どちらの場合も、message を MSG ポインタにキャストすることができます。result ポインタは Windows でのみ使用され、LRESULT ポインタに対応する。
macOSでは、eventType は "mac_generic_NSEvent "に設定され、message はNSEventポインタにキャストできます。
この関数の再実装において、message をフィルタリングしたい場合、つまりそれ以上処理したくない場合は true を返し、そうでない場合は false を返してください。
Linuxの例
class MyXcbEventFilter : public QAbstractNativeEventFilter { public: bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) override { if (eventType == "xcb_generic_event_t") { xcb_generic_event_t* ev = static_cast<xcb_generic_event_t *>(message); // ... } return false; } };
Windowsの例
class MyMSGEventFilter : public QAbstractNativeEventFilter { public: bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) override { if (eventType == "windows_generic_MSG") { MSG *msg = static_cast<MSG *>(message); // ... } else if (eventType == "windows_dispatcher_MSG") { MSG *msg = static_cast<MSG *>(message); // ... } return false; } };
macOSの例
mycocoaeventfilter.h:
#include <QAbstractNativeEventFilter> class MyCocoaEventFilter : public QAbstractNativeEventFilter { public: bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) override; };
mycocoaeventfilter.mm:
#include "mycocoaeventfilter.h" #import <AppKit/AppKit.h> bool MyCocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) { if (eventType == "mac_generic_NSEvent") { NSEvent *event = static_cast<NSEvent *>(message); if ([event type] == NSKeyDown) { // Handle key event qDebug() << QString::fromNSString([event characters]); } } return false; }
myapp.pro:
HEADERS += mycocoaeventfilter.h OBJECTIVE_SOURCES += mycocoaeventfilter.mm LIBS += -framework AppKit
© 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.