窃取焦点(有充分理由)

时间:2012-10-26 10:18:02

标签: c++ qt4 focus qt-creator

我正在研究Yakuake的克隆,如果你已经使用它,你就会知道其中一个功能就是为了方便而将重点放在了上面。

基本上,你点击“显示”热键,应用程序出现,你可以在上面写。 你可以用任何应用程序做任何事情(被Yakuake隐藏),但是一旦你点击热键,Yakuake出现并窃取焦点。我想对我的应用做同样的事情。

我知道有一些窗口管理器规则会阻止应用程序执行此操作,但Yakuake正在这样做,为什么我无法执行此操作?

此外,此应用程序旨在与Windows,Linux和Mac兼容,因此没有KDE或Gnome或< insert_your_favourite_window_manager_here>黑客;我不会去检测-WM-and-do-hack方式。

PS:我正在用C ++和Qt4做这个应用程序。

编辑:

为了说清楚,我不是要求任何代码(但是如果你真的有一些例子,我会说它)。我正在寻找一种方法来做到这一点。我应该怎么做才能让WM将焦点分配给我的应用程序。有没有标准的方法呢?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

解决方案比我想象的要简单。我做了一个持续时间为0的动画,在动画结束时我只做了一个焦点。这样做了。

答案 2 :(得分:0)

如果您想使用“show”热键或快捷键进行操作,则必须在键盘上创建并使用挂钩。

Qt不提供这样的东西,所以你必须自己做
你可以看一下这篇文章:QT background process

我不知道其他操作系统。

当您从钩子中获得正确的键盘事件时,您可以创建一个窗口,其中“allwas on top hint”,这应该是ok。