2

我正在研究Yakuake的克隆,如果你使用过它,你就会知道它的一个功能是为了方便而偷取焦点。

基本上,你点击“显示”热键,应用程序就会出现,你可以在上面写字。您可以使用任何应用程序做任何事情(隐藏 Yakuake),但只要您按下热键,Yakuake 就会出现并窃取焦点。我想对我的应用程序做同样的事情。

我知道有一些窗口管理器规则会阻止应用程序这样做,但是 Yakuake 正在这样做,为什么我不能这样做?

此外,此应用程序旨在与 Windows、Linux 和 Mac 兼容,因此没有 KDE 或 Gnome 或 < insert_your_favourite_window_manager_here > hacks;我不会采用检测 WM 并进行黑客攻击的方式。

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

编辑:

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

4

3 回答 3

1

Qt::WindowStaysOnTopHint....

于 2012-10-26T10:23:50.237 回答
1

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

于 2012-11-26T11:30:07.520 回答
0

如果您想使用“显示”热键或快捷方式来执行此操作,则必须在键盘上创建并使用挂钩。

Qt 不提供这样的东西,所以你必须自己做。

你可以看看这个帖子:QT后台进程

我不知道其他操作系统。

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

于 2012-11-06T17:04:52.317 回答