• 7537阅读
  • 11回复

[提问]请问 如何让主窗口获得键盘的上,下,左,右事件? [复制链接]

上一主题 下一主题
离线jxacc
 
只看楼主 倒序阅读 楼主  发表于: 2012-06-04
关键词: QT4事件求助
大家好。
窗口有1个QLabel显示图片,2个QPushButton表示前一张,后一张。但是我想增加快捷键,按键盘上的Left显示前一张,按键盘上的Right显示后一张。我主窗口继承了bool event(QEvent *event)函数,但是程序运行时候,我按Left,Right总是按钮的焦点在移动。有什么好方法么?
谢谢



在线uidab

只看该作者 1楼 发表于: 2012-06-04
有 Qt::Key_Left    Qt::Key_Up   Qt::Key_Right    Qt::Key_Down    Qt::Key_PageUp  Qt::Key_PageDown

继承 keyPressEvent ( QKeyEvent * )是不是更好?
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线jxacc
只看该作者 2楼 发表于: 2012-06-04
keyPressEvent ( QKeyEvent * ) 我也试了,还是没有我想要的效果额。
    
if ( event->key() == Qt::Key_Left) {
    qDebug() << "Key_Left";

else if( event->key() == Qt::Key_Right ){
    qDebug() << "Key_Right";

我按左右的时候 在控制台下面看不到Key_Left 或者 Key_Right,都是按钮焦点在移动
离线xie133
只看该作者 3楼 发表于: 2012-06-04
处理完成之后记得return true;
离线benbenmajia

只看该作者 4楼 发表于: 2012-06-04
直接重写QLabel,并以他为主窗口就ok
安然.....
在线uidab

只看该作者 5楼 发表于: 2012-06-04
回 2楼(jxacc) 的帖子
感觉和焦点处理有关系。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线xie133
只看该作者 6楼 发表于: 2012-06-04
有安装事件过滤器吗?
离线roywillow

只看该作者 7楼 发表于: 2012-06-04
这个可能还与焦点有关
试试把所有的内部组件的focusPolicy都设为Qt::NoFocus试试
QLabel的话,好像默认是不接受焦点的,这样也会没法接收键盘事件吧,这个可能也需要改改
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jxacc
只看该作者 8楼 发表于: 2012-06-05
貌似找到了个折中的办法, 用 (ke->key()==QEvent::KeyRelease)判断不用KeyPress,虽然可以实现我的需求但是还是会有焦点的移动。
离线jxacc
只看该作者 9楼 发表于: 2012-06-05
引用第7楼roywillow于2012-06-04 19:12发表的  :
这个可能还与焦点有关
试试把所有的内部组件的focusPolicy都设为Qt::NoFocus试试
QLabel的话,好像默认是不接受焦点的,这样也会没法接收键盘事件吧,这个可能也需要改改



这样也行,但是焦点没了。
在线uidab

只看该作者 10楼 发表于: 2012-06-05
回 8楼(jxacc) 的帖子
解决就好,以后我们遇到这样的事情也会知道怎么处理了。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线nlstone

只看该作者 11楼 发表于: 2012-06-05
可以给这两个qpushbutton装事件过滤器,把左右键事件都由父窗口吃掉并处理。
无我不能之事
无我不解之谜
无我不为之利
无我不胜之争
快速回复
限100 字节
 
上一个 下一个