import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtCore import (QAbstractNativeEventFilter, QAbstractEventDispatcher,
                            QLibraryInfo, qVersion)


class MyEventFilter(QAbstractNativeEventFilter):
    def __init__(self):
        super().__init__()

    def nativeEventFilter(self, eventType, message):
        print('MyEventFilter', eventType)
        return [False, 0]


class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.setWindowTitle(qVersion())

    def nativeEvent(self, eventType, message):
        hm = hex(int(message))
        print(f'nativeEvent "{eventType}" {hm}')
        return [False, 0]


if __name__ == '__main__':
    print('Python {}.{}.{}'.format(sys.version_info[0], sys.version_info[1],
                                   sys.version_info[2]))
    print(QLibraryInfo.build())
    app = QApplication(sys.argv)
    print(QLibraryInfo.build())

    dispatcher = QAbstractEventDispatcher.instance()
    filter = MyEventFilter()
    dispatcher.installNativeEventFilter(filter)

    ex = Example()
    ex.show()
    sys.exit(app.exec())
