首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qt 方向键解决方案

2012-12-15 
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
[其他解释]
问题解决了么?
[其他解释]

引用:
问题解决了么?

木有啊!!!
[其他解释]
引用:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
 ……


你这个只有主窗口,窗口上没有焦点所以可以!
[其他解释]
引用:
“我估计是 左右被widget截取了,用来转移焦点!!!!”

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


木有研究出才来者提问的吗
[其他解释]
我也是同样的问题。。tab键也不行。。
[其他解释]
引用:
哦。那你就用eventfilter先过滤下事件吧。。


怎么过滤?键盘事件不是都被keyPressEvent获取了吗?
[其他解释]
引用:
tab键需要特殊的处理的,只用这样处理tab键就被window是截取了,同意eventfilter


installeventfilter后所有的的event都被eventfilter获得了,keypassevent已经无法获得event了!

热点排行