在Windows上的Qt :: X11BypassWindowManagerHintfunction

我目前正在开发一个跨平台的虚拟键盘。 在Linux中,我能够做任何我想要的,但在Windows中,我有问题,以防止小部件获得键盘焦点。

在Linux中,使用窗口标志

Qt::X11BypassWindowManagerHint 

该小部件从来没有得到键盘input,但当然,该标志不适用于Windows

有没有相当于那个标志或一些我可以使用的方法吗?

任何想法,将不胜感激

提前致谢

我发布了一个类似的问题的答案在一个浮动的QDockWidget无法集中 。 在Win32上,你并没有完全绕过窗口管理器的选择,但是你应该能够通过拦截nativeEvent来处理WM_MOUSEACTIVATE来获得你想要的大部分行为。

我会尽量忽略这个事件。 我相信你需要忽略主应用程序窗口上的FocusIn – 不确定实际事件,你可能需要原型。 您可以通过安装事件过滤器或手动重新实现其中一个event方法(可能是event本身)来执行忽略事件。 我不知道哪个是首选的方式,但我会尝试事件过滤器首先为此任务: http : //doc.trolltech.com/4.6/qobject.html#eventFilter

我从来没有试图捕获键盘焦点事件,但我已经能够成功地忽略QDialog转义键,以防止用户意外关闭窗口。 我相信应该是可以的。