找回密码
 立即注册
收起左侧

Qt 按键

6
回复
9436
查看
[复制链接]

尚未签到

来源: 2013-8-1 17:34:05 显示全部楼层 |阅读模式
1Qter豆
[backcolor=white !important]void Dialog::keyPressEvent(QKeyEvent *e){                switch (e->key())                     {                              case Qt::Key_Up : qDebug()<<"Key_Up"; break;                             case Qt::Key_Down :  qDebug()<<"Key_Down"; break;                             case Qt::Key_Right : qDebug()<<"Key_Right";focusPreviousChild(); break;                             case Qt::Key_Left: qDebug()<<"Key_Left";focusNextChild(); break;                     }}

上下键是可以的,为什么左右键不可以呢?请教各位大神!谢谢!

最佳答案

查看完整内容

setFocus(Qt::ShortcutFocusReason);//设置焦点 试试看 我写了个测试可以啊 void MyItem::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Up) moveBy(0,-10); else if(event->key() == Qt::Key_Down) moveBy(0,10); else if(event->key() == Qt::Key_Right) moveBy(10,0); else if(event->key() == Qt::Key_Left) moveBy(-10,0); }
回复

使用道具 举报

累计签到:29 天
连续签到:1 天
2013-8-1 17:34:06 显示全部楼层
setFocus(Qt::ShortcutFocusReason);//设置焦点
试试看
我写了个测试可以啊
void MyItem::keyPressEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Up)
        moveBy(0,-10);
    else if(event->key() == Qt::Key_Down)
        moveBy(0,10);
    else if(event->key() == Qt::Key_Right)
        moveBy(10,0);
    else if(event->key() == Qt::Key_Left)
        moveBy(-10,0);
}
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2013-8-1 19:22:01 显示全部楼层
你的窗口上是不是还有一些widgets,如编辑框,按钮等?
注意你用了这个函数
  1. focusPreviousChild();
复制代码
推测是它导致的,可以注释掉试试。
查下帮助文档,该函数说明是Finds a new widget to give the keyboard focus to ……
回复

使用道具 举报

累计签到:181 天
连续签到:1 天
2013-8-2 08:47:58 显示全部楼层
设置一下wdiget的属性应该就可以了。在构造函数里执行
setFocusPolicy(Qt::StrongFocus);
应该就可以了。
回复

使用道具 举报

尚未签到

2013-8-2 09:21:42 显示全部楼层
blacknightshade 发表于 2013-8-1 19:22
你的窗口上是不是还有一些widgets,如编辑框,按钮等?
注意你用了这个函数推测是它导致的,可以注释掉试试 ...

窗口有编辑框,按钮,但是注释掉,依然不好使!
回复

使用道具 举报

尚未签到

2013-8-2 09:29:00 显示全部楼层
本帖最后由 xuzhu.ok 于 2013-8-2 11:05 编辑
hzzhou 发表于 2013-8-2 08:47
设置一下wdiget的属性应该就可以了。在构造函数里执行
setFocusPolicy(Qt::StrongFocus);
应该就可以了。
在无控件的地方可以。
我想,光标在QLineEdit中,通过Right键跳到下一个QLineEdit中,请指点
回复

使用道具 举报

累计签到:13 天
连续签到:1 天
2013-8-2 11:15:04 显示全部楼层
xuzhu.ok 发表于 2013-8-2 09:29
在无控件的地方可以。
我想,光标在QLineEdit中,通过Right键跳到下一个QLineEdit中,请指点 ...

需要设置焦点和和取消焦点,每次只有一个控件获得焦点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了