在QT中使用Mouse捕获全局键盘

时间:2011-09-04 15:40:59

标签: c++ qt

在我的Qt应用程序中,当我的应用程序最小化或托盘时,我想监视全局键盘和鼠标,当用户使用CTRL +右击键时,我的应用程序可见状态设置为显示。

我该如何实现它。

2 个答案:

答案 0 :(得分:2)

有很多很好的理由不写这种应用程序(例如,当你有两个程序都有这样的想法与全局行为,他们会相互冲突,并做一些随机的看似)。事实上,全局捕获Ctrl +右击并弹出一个应用程序听起来是一个非常糟糕的主意,因为许多程序已经为此定义了一个重要的行为。

通常更好的方法是让用户通过操作系统的机制分配热键:

http://lifehacker.com/343328/create-a-keyboard-shortcut-for-any-menu-action-in-any-program

或者建议用户使用一些已经弄明白的第三方程序,并让他们移动冲突的全球热键以满足他们的口味:

http://lifehacker.com/software/hack-attack/turn-any-action-into-a-keyboard-shortcut-316589.php

有一些程序可以通过触摸按钮来解决提供服务的问题,这些程序具有相当不错的用户界面隐喻,这可能会让你相信它们比挂钩右键更好。 Mac上的Quicksilver对于想法来说是一件好事。

无论如何你要解决它,你可能必须以不同的方式为每个平台做这件事。在Windows上,您需要一个全局 WH_MOUSE钩子:

http://msdn.microsoft.com/en-us/library/ms644960(VS.85).aspx

答案 1 :(得分:0)

虽然我同意HostileFork,但这可能会对您有所帮助:http://libqxt.bitbucket.org/doc/tip/qxtglobalshortcut.html