qt 方向键

挣扎中前行 2012-09-25 02:05:45

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截取了,用来转移焦点!!!!
怎么让上面的左右,也实现啊?
...全文
451 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gnefnuhc123 2013-10-28
  • 打赏
  • 举报
回复
我的方向事件是被滚动条吃去了,我的上下左右都没有的,最后发现是咋滚动条那边
挣扎中前行 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

tab键需要特殊的处理的,只用这样处理tab键就被window是截取了,同意eventfilter
[/Quote]

installeventfilter后所有的的event都被eventfilter获得了,keypassevent已经无法获得event了!
  • 打赏
  • 举报
回复
tab键需要特殊的处理的,只用这样处理tab键就被window是截取了,同意eventfilter
挣扎中前行 2012-10-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

哦。那你就用eventfilter先过滤下事件吧。。
[/Quote]

怎么过滤?键盘事件不是都被keyPressEvent获取了吗?
  • 打赏
  • 举报
回复
哦。那你就用eventfilter先过滤下事件吧。。
yuzoubawang888 2012-10-12
  • 打赏
  • 举报
回复
我也是同样的问题。。tab键也不行。。
挣扎中前行 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

“我估计是 左右被widget截取了,用来转移焦点!!!!”

看代码 没有任何问题 你自己都说被截取了
那你就研究下哪里出现问题或者冲突了 解决下
要不就把你要实现功能的代码都贴上
[/Quote]

木有研究出才来者提问的吗
挣扎中前行 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
……
[/Quote]

你这个只有主窗口,窗口上没有焦点所以可以!
  • 打赏
  • 举报
回复
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_Right :
qDebug() << "Qt::Key_Right";
break ;
case Qt::Key_Up :
qDebug() << "Qt::Key_Up";
break ;
case Qt::Key_Left :
qDebug() << "Qt::Key_Left";
break ;
case Qt::Key_Down :
qDebug() << "Qt::Key_Down";
break ;
default :
qDebug() << "Qt::Keypressed";
break ;
}
}

简单的GUI工程。。

能响应呢。。
挣扎中前行 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

问题解决了么?
[/Quote]
木有啊!!!
blunder 2012-10-11
  • 打赏
  • 举报
回复
“我估计是 左右被widget截取了,用来转移焦点!!!!”

看代码 没有任何问题 你自己都说被截取了
那你就研究下哪里出现问题或者冲突了 解决下
要不就把你要实现功能的代码都贴上
  • 打赏
  • 举报
回复
问题解决了么?

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧