我目前正在开发一个跨平台的虚拟键盘。 在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
转义键,以防止用户意外关闭窗口。 我相信应该是可以的。