• 12463阅读
  • 4回复

keyPressEvent 不能响应左,右方向键!(以解决) [复制链接]

上一主题 下一主题
离线aoxuehan
 

只看楼主 倒序阅读 楼主  发表于: 2010-01-12
— 本帖被 XChinux 执行加亮操作(2010-11-18) —
void rab_user::keyPressEvent(QKeyEvent *event)
{
    switch (event->key())
    {
    case Qt::Key_Right :
        QMessageBox::information(NULL,tr("键盘消息"),tr("按键为:向右箭头。"));
        break ;
    case Qt::Key_Up :
        QMessageBox::information(NULL,tr("键盘消息"),tr("按键为:向上箭头。"));
        break ;
    case Qt::Key_Left :
        QMessageBox::information(NULL,tr("键盘消息"),tr("按键为:向左箭头。"));
        break ;
    case Qt::Key_Down :
        QMessageBox::information(NULL,tr("键盘消息"),tr("按键为:向下箭头。"));
        break ;
    default :
        QMessageBox::information(NULL,tr("键盘消息"),tr("按键为:其他按键。"));
        break ;
    }
}

上述代码。可以响应 上,下方向键。为什么不能响应左右方向键呢?

我估计是  左右被widget截取了,用来转移焦点!!!!
怎么让上面的左右,也实现啊?
[ 此帖被aoxuehan在2010-01-12 20:38重新编辑 ]
常梦想自己是地主家的少爷
整天游手好闲,不学无术
没事儿带着一帮狗奴才在大街上调戏良家妇女。
离线aoxuehan

只看该作者 1楼 发表于: 2010-01-12
我现在用的一个很拙劣的方法。 把QMainWindow上的所有控件focusPolicy设定为:noFocus。。
这样是可以。但是也不能实现tab切换了!!!!


期待高人。!
常梦想自己是地主家的少爷
整天游手好闲,不学无术
没事儿带着一帮狗奴才在大街上调戏良家妇女。
离线xinqingfly

只看该作者 2楼 发表于: 2010-01-12
setFocusPolicy(Qt::StrongFocus);
菜鸟也是鸟
离线aoxuehan

只看该作者 3楼 发表于: 2010-01-12
引用第2楼xinqingfly于2010-01-12 13:58发表的  :
setFocusPolicy(Qt::StrongFocus);


在构造函数里面么?
我去试试!
常梦想自己是地主家的少爷
整天游手好闲,不学无术
没事儿带着一帮狗奴才在大街上调戏良家妇女。
离线ljj422

只看该作者 4楼 发表于: 2010-11-18
在QMainWindow的所有子控件的消息处理函数设置事件忽略,这样子控件就不会处理按键消息了,会把该消息发送会QMainWindow窗口处理。
::keyPressEvent(QKeyEvent *event)
{
    event->ignore();

}
快速回复
限100 字节
 
上一个 下一个