Qt怎么实现以下的按键事件。

Qt如何实现以下的按键事件。。。
1. 程序实现F12按键截屏。。

2. 主界面已经实现了,F12截屏。。

3. 当主界面弹出MessageBox时,F12失效了,因为当前焦点界面变化了!!

4.如何实现像window那样的hook键盘。。只要注册了,在程序运行时,不管那个界面都可以相应键盘消息!!

5.Qt程序如何实现hook类型的按键消息。。

6。本程序中有大量的MsgBox窗口。。要实现这个F12截屏,应该怎么做哪???

------解决方案--------------------
你可以去下载我自己写的一个屏幕绘图软件,里面实现了热键呼叫功能,按F5可以隐藏主界面,然后再按F6键就可以重新呼出这个界面。里面就是用到了HOOK编程,安装了键盘钩子。我今天刚上传到csdn上了,资源名称是“Qt实现的屏幕绘图软件”,或者你可以加我qq,我发给你也行。我的qq是451087096,验证答案是宋慧荣。
------解决方案--------------------
用事件管理器,在mainwindow里操作messagebox的键盘事件。
------解决方案--------------------
如果只在Windows下运行,试下RegisterHotKey注册系统热键吧。跨平台的话,不知道Mac和Linux有没有相关函数。用钩子的话,那和Qt无关而和Windows API有关了。
------解决方案--------------------
可以应用一下程序实现
NeHeWidget::keyPressEvent( QKeyEvent *e )
{
switch (e-> key() )
{
case Qt::Key_F2:
fullscreen = !fullscreen;
if ( fullscreen )
{
showFullScreen();
}
else
{
showNormal();
setGeometry( 0, 0, 640, 480 );
}
updateGL();
break;
//如果按下了F2键,那么屏幕是否全屏的状态就切换一次。然后再根据需要,显示所要的全屏窗口或者普通窗口。
case Qt::Key_Escape:
close();
}
//如果按下了Escape键,程序退出。
}
------解决方案--------------------
探讨
用事件管理器,在mainwindow里操作messagebox的键盘事件。

------解决方案--------------------
因为操作的太多,必须要全局热键, 个人觉得这不是理由。写一个messagebox,所以地方调用,然后把事件管理器装到mainwindow上。不过你可以看看这个 帖子 http://blog.163.com/ojb_123/blog/static/2417742420094138384658/
------解决方案--------------------
QxtGlobalShortcut
全局热键的处理
http://www.oschina.net/question/234345_52602
参考