Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux QWidget/X11:防止窗口被鼠标点击激活/聚焦_Linux_Qt_X11_Qwidget - Fatal编程技术网

Linux QWidget/X11:防止窗口被鼠标点击激活/聚焦

Linux QWidget/X11:防止窗口被鼠标点击激活/聚焦,linux,qt,x11,qwidget,Linux,Qt,X11,Qwidget,我想用Qt/QML开发一个系统范围的屏幕键盘。通过xlib注入关键事件效果良好 我现在的问题是:如果单击键盘按钮,带有所选输入字段的窗口将失去焦点。因此,键事件将不会传递到先前选择的输入字段 那么,有人知道如何防止QWidget被鼠标点击激活/聚焦吗?每一个提示都是受欢迎的,一个代码示例将非常棒 事先非常感谢, Frime您可以观看FocusIn/FocusOut事件,并强制将焦点返回到上一个窗口。或者,让你的屏幕键盘覆盖重定向,根本不用担心焦点(如果你有“鼠标严格聚焦”的策略,它将不起作用,但

我想用Qt/QML开发一个系统范围的屏幕键盘。通过xlib注入关键事件效果良好

我现在的问题是:如果单击键盘按钮,带有所选输入字段的窗口将失去焦点。因此,键事件将不会传递到先前选择的输入字段

那么,有人知道如何防止QWidget被鼠标点击激活/聚焦吗?每一个提示都是受欢迎的,一个代码示例将非常棒

事先非常感谢,
Frime

您可以观看FocusIn/FocusOut事件,并强制将焦点返回到上一个窗口。或者,让你的屏幕键盘覆盖重定向,根本不用担心焦点(如果你有“鼠标严格聚焦”的策略,它将不起作用,但我认为没有屏幕键盘可以明智地使用此策略)。嗨!谢谢你的评论。如何在Qt中捕捉X11聚焦事件?或者你的意思是QWidgets自己的FocusIn/Out事件?这将不起作用,因为键盘必须在系统范围内操作任何应用程序,而不仅仅是在它自己的应用程序中。我指的是X11事件。请参阅。您需要调用
XSelectInput(dpy、root、FocusChangeMask)
。再次感谢您。好的,现在我可以捕捉这些“xcb_generic_event_t”事件。具有不同的响应类型,如“FocusIn”或“FocusOut”。但是他们没有提供任何关于先前聚焦窗口的可重用信息。。。还是我错过了什么?你想看看FocusIn之前的FocusOut事件。它应该包含以前聚焦的窗口。