qt 方向键void rab_user::keyPressEvent(QKeyEvent *event){switch (event-key()){case Qt::Key_Right :Q
qt 方向键
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截取了,用来转移焦点!!!!
怎么让上面的左右,也实现啊?
[解决办法]#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工程。。
能响应呢。。
[解决办法]“我估计是 左右被widget截取了,用来转移焦点!!!!”
看代码 没有任何问题 你自己都说被截取了
那你就研究下哪里出现问题或者冲突了 解决下
要不就把你要实现功能的代码都贴上
[解决办法]哦。那你就用eventfilter先过滤下事件吧。。
[解决办法]tab键需要特殊的处理的,只用这样处理tab键就被window是截取了,同意eventfilter