首页| 论坛| 消息

标题:帮助,关于键盘响应问题,谢谢了
作者:左岸右转
日期:2006-04-28 10:16
内容:

我在坐一个界面里,窗口捕获焦点事件。如按向上键后,处理一些程序。这样响应是实现了,但是我想在处理响应程序的时候把键盘响应先关了(也就是在处理程序时再按键盘是无效的),等程序处理完后再打开键盘响应。在进行处理程序前我加了releaseKeyboard ()腿出处理程序后我再加grabKeyboard (),可是在处理程序的时候,键盘却仍然可以响应。这是为什么了,有哪位高手知道可以让键盘不发生响应的指令吗,谢谢了,小弟是位新手,找了很多资料都没有找到。急


#1 [shiroki 04-28 10:47]
我感觉不想响应的时候应该grabkeyboard, 但所有事件都不处理。 不知道为什么不想响应的时候要调releasekeyboard呢? release之后事件就按照正常的路线走了, 始终会传给focus widget的
#2 [左岸右转 04-28 14:11]
grabKeyboard () 捕获键盘输入。而releaseKeyboard () 是释放键盘捕获。不想要响应键盘输入的时候不是用releaseKeyboard 吗,难道这理解错了,刚好反了,再试试看,呵,我调了一上午了还是不行,呵。希望这下可以。
#3 [左岸右转 04-28 14:22]
刚开始我的程序是这样写的,键盘第一次响应后进入。处理里面的程序后,用releaseKeyboard (); 释放键盘后,以后再按Key_Up 就不会再响应键盘程序了,可是写次按Key_Up 后还是会继续响应是什么了。
void Form1_Ch1::keyPressEvent ( QKeyEvent * event )
{
if(event->key()==Qt::Key_Up )/
{
releaseKeyboard ();
if (teamflag>1)
teamflag--;
else
teamflag=20;

printf("%d\n",xx++);//测试
update();
}

刚才shiroki说是用grabKeyboard (); 才会不响应,所以我改成
void Form1_Ch1::keyPressEvent ( QKeyEvent * event )
{
if(event->key()==Qt::Key_Up )/
{
grabKeyboard ();
if (teamflag>1)
teamflag--;
else
teamflag=20;

printf("%d\n",xx++);//测试
update();
}
但进入一次之后,按Key_Up 还是会继续响应的;希望哪个朋友知道的可否告知一下,项目急着要出来,谢谢了。
#4 [左岸右转 04-28 19:47]
哪位知道的告知一下吧,谢谢了
#5 [dotnetjack 04-29 11:02]
Qt/Embedded提供了事件过滤器(key event filter)的接口,在键盘点击事件从QWSServer截获并发送到相应的client之前会经过函数QWSServer::KeyboardFilter。

<< 1 2 3 >> (1/3)

回复 发表
主题 版块