将私有 Qt api (QWindowSystemEventHandler/QWindowSystemInterfacePrivate::WindowSystemEvent) 与 PySide2 一起使用

问题描述 投票:0回答:1

简而言之,我正在尝试记录和回放本机窗口事件以进行测试,因为对常规

QEvent
进行相同的操作感觉不可行,因为它需要快速场景中的每个
QObject
都有一个独特的
QObject::name
,这应该每次运行时都会以相同的方式重新分配。 当涉及视图(甚至是树视图)并且所有可见的东西都是一个项目时,这很容易失控。

所以我们的想法是跟踪本机窗口事件,这可以通过

QCoreApplication::installNativeEventFilter
实现。

然而,对于重新注射来说,情况就完全不同了。 通过深入研究 Qt 源代码,我最终找到了

QWindowSystemEventHandler
这似乎是我所需要的。 虽然是私有标头,但它似乎是一个可以轻松调用的公共静态 API,也在
QWindowSystemInterfacePrivate::installWindowSystemEventHandler
中。

问题是我不知道如何从 PySide2 访问它。这是否可能,如果不可能,是否有其他方法可以做到这一点?

如果没有,原则上我可以修改 PySide2 包装器以公开这些类并重建它吗?

python python-3.x qt5 pyside2
1个回答
0
投票

经过一些研究,似乎实现我要求的最简单方法是创建一个自定义模块及其绑定,如 https://www.kdab.com/creating-python-bindings-for 中所述-qt-libraries/https://doc.qt.io/qtforpython-5/shiboken2/examples/samplebinding.html

© www.soinside.com 2019 - 2024. All rights reserved.