窃取重点(有充分的理由)
Stealing focus (for a good reason)
本文关键字:理由 更新时间:2023-10-16
我正在研究Yakuake的克隆,如果您使用过它,您会知道它的一个功能是窃取焦点。
基本上,您点击了" Show" Hotkey,该应用程序出现,并且可以在其中写入。您可以使用任何应用程序(被Yakuake隐藏)做任何事情,但是一旦您击中Hotkey,Yakuake就会出现并窃取了焦点。我想对我的应用做同样的事情。
我知道有一些窗口管理器规则可以阻止应用程序这样做,但是Yakuake正在这样做,为什么我不能这样做?
此外,此应用程序旨在与Windows,Linux和Mac兼容,因此没有KDE或GNOME或GNOME或&&&&<insert_your_favourite_window_manager_here> hacks;我不会去检测WM和DO-HACK。
ps:我正在在C 和QT4中进行该应用。
编辑:
只是为了清楚地表明,我不是要求任何代码(但是如果您实际上有一些例子,我会对其进行评估)。我要一种方法。我应该怎么做才能使WM将焦点分配给我的应用。是否有任何标准方法?
有Qt::WindowStaysOnTopHint
....
解决方案比我想象的要简单。我做了一个动画,其持续时间为0,在动画结束时,我刚刚做了重点。这做了工作。
如果要使用" show"热键或快捷方式进行操作
QT不提供这样的东西,所以您必须自己做。
您可以查看此帖子:QT背景过程
我不知道其他操作系统。
当您从挂钩中获得正确的键盘事件时,可以创建一个带有" Allwas顶部提示"的窗口,这应该可以。
相关文章:
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 在调用其析构函数之前,是否有任何实际理由检查某些东西是否可破坏?
- 有什么理由不扩展 std::set 以添加下标运算符吗?
- 是否有理由在标题中保留完全专用的模板?
- 任何不使用全局Lambda的理由
- 如果我有很多具有相似前缀的字符串,是否有理由从该前缀创建一个子字符串?
- 如果代码中没有连接任何插槽,是否有理由发出Qt信号?
- 有什么理由用右值引用重载运算符吗?
- 有什么理由在函数中使用 const 吗?
- 有什么理由C++ 11+ std::mutex 应该声明为全局变量,而不是作为函数参数传递到 std::thread 中
- 有什么理由在没有继承的情况下声明一个虚拟方法
- 是否有理由对非负常量使用无符号类型?
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- 不允许功能模板的部分专业化背后的理由是什么?
- 铸造兄弟姐妹类是有充分理由的
- 这个错误是什么?似乎没有理由出现
- typeid 运算符忽略 cv 限定符背后的理由是什么?
- 是否仍然有理由在C++代码中使用"int"
- 对于类型是类模板专业化的参数,ADL背后的理由是什么
- 是否有理由使用 malloc 初始化构造函数中的指针