【问题标题】:Qt and X11 fullscreen application , which blocks Window Manager simultaneouslyQt 和 X11 全屏应用程序,同时阻止窗口管理器
【发布时间】:2011-06-08 18:58:23
【问题描述】:

我认为我需要将 XEvent 与 QMainWindow 一起使用,以使我的应用程序即使通过窗口管理器也无法关闭,谁能提供一个示例?

这就像一个全屏视频游戏,它会阻止所有键盘、鼠标按钮。

P.S: QWidget::grabKeyboard() && QWidget::grabMouse() 在我尝试使用“ALT_TAB”等组合键切换到其他应用程序时不起作用

谢谢。

【问题讨论】:

  • 问起来可能有点晚,但我正在尝试做同样的事情。你是怎么做到的?

标签: c++ qt xorg


【解决方案1】:

要完全阻止来自其他应用的所有输入,您需要使用XGrabServer 而不是XGrabKeyboard/XGrabPointer 组合。不知道 Qt 是否有 API,但你总是可以直接调用 Xlib 函数。

但我建议不要这样做。如果应用程序由于某种原因没有释放抓取,那么你就被卡住了,需要逃到控制台杀死它。

【讨论】:

  • 我讨厌不能 ALT+TAB 的应用程序!
  • 本来就是这样设计的,呵呵。但是,我抓住了整个屏幕,鼠标和键盘卡住了,我的应用程序没有显示,它是有线的,但无论如何它工作!
【解决方案2】:

我认为您可以覆盖主窗口的 closeEvent() 并使用 here 所述的 ignore() 方法拒绝该事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多