Spec-Zone.ru › Qt 5.6

Класс QAbstractNativeEventFilter

Класс QAbstractNativeEventFilter предоставляет интерфейс для получения системных событий, таких как структуры MSG или XCB. Подробнее...

Заголовок: #include <QAbstractNativeEventFilter>
qmake: QT += core
С момента: Qt 5.0
  • Список всех членов, включая наследуемые

Открытые функции

QAbstractNativeEventFilter()
virtual ~QAbstractNativeEventFilter()
virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) = 0

Подробное описание

Класс QAbstractNativeEventFilter предоставляет интерфейс для получения системных событий, таких как структуры MSG или XCB.

Документация по членам-функциям

QAbstractNativeEventFilter::QAbstractNativeEventFilter()

Создаёт фильтр системных событий.

По умолчанию ничего не делает. Не забудьте установить его на объект приложения.

[virtual] QAbstractNativeEventFilter::~QAbstractNativeEventFilter()

Уничтожает фильтр системных событий.

Это автоматически удаляет его из приложения.

[pure virtual] bool QAbstractNativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *result)

Этот метод вызывается для каждого системного события.

Примечание: Функция-фильтр здесь получает системные сообщения, например, структуры 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.

В Blackberry (не обычный QNX) eventType устанавливается в "bps_event_t", и message можно привести к указателю bps_event_t.

В вашем переопределении этой функции, если вы хотите отфильтровать message, т.е. остановить его дальнейшую обработку, верните true; в противном случае верните false.

Пример Linux

class MyXcbEventFilter : public QAbstractNativeEventFilter
{
public:
    virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE
    {
        if (eventType == "xcb_generic_event_t") {
            xcb_generic_event_t* ev = static_cast<xcb_generic_event_t *>(message);
            // ...
        }
        return false;
    }
};

Пример macOS

mycocoaeventfilter.h:

#include <QAbstractNativeEventFilter>

class MyCocoaEventFilter : public QAbstractNativeEventFilter
{
public:
    bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE;
};

mycocoaeventfilter.mm:

#include "mycocoaeventfilter.h"

#import <AppKit/AppKit.h>

bool CocoaNativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *)
{
    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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qabstractnativeeventfilter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API