• 5091阅读
  • 4回复

一个关于键盘事件问题 [复制链接]

上一主题 下一主题
离线hanb99
 

只看楼主 倒序阅读 楼主  发表于: 2006-10-27
#include <QtGui>
#include "inputcontrol.h"
InputControl::InputControl(QWidget *parent) : QWidget(parent)
{
  edit1 = new QLineEdit(this);
  edit2 = new QLineEdit(this);
  edit3 = new QLineEdit(this);
  edit1->setGeometry(10, 10, 200, 30);
  edit2->setGeometry(10, 50, 200, 30);
  edit3->setGeometry(10, 90, 200, 30);
}

void InputControl::keyPressEvent(QKeyEvent *e)
{
  switch (e->key())
  {
    case Qt::Key_Enter:   //这里如果改成Qt::Key_Control就能实现Tab功能
        focusNextPrevChild(true);
        break;
  }
}
+++++++++++++++++++++++++++++++++++
上面是我写的一段代码,想要实现的功能是:当我在LineEdit中(三个中的任何一个)输入完之后,按一下Enter后,光标自动转到下一个LineEdit中(相当于我按下了Tab键一样)。
现在的问题是如程序所写,这个功能无法实现(象注释那样就可以)。请那位大侠指点一下要如何做才能正确实现这个功能呢。
如果方便可以说一下是为什么吗?
另外如果我想屏掉系统的快捷键,让我定义的起作用要如何做呢?
离线mike
只看该作者 1楼 发表于: 2006-10-31
试一下Key_Return
离线wangowen

只看该作者 2楼 发表于: 2006-10-31
Enter和Tab这些情况应该是在keyPressEvent()之间被event()函数处理了。
离线wangowen

只看该作者 3楼 发表于: 2006-11-01
对,Qt::Key_Enter对应的是小键盘的Enter而Qt::Key_Return对应的是大键盘的。
离线realwerw

只看该作者 4楼 发表于: 2006-11-14
我以前是用老土的办法:
class A
{
private:
    void showFocus(void);
private:
    int m_nFocusNo;
}

A::A()
{
    m_nFocusNo=0;

.............

    showFocus();
}

A::keyPressEvent(QKeyEvent *e)
{
  if(e->type()==KEY_PRESS)
  {
        m_pLineEidt[m_nFocusNo]->keyPressEvent(e);      
        //如果lineedit已经满足条件
    //m_pLineEdit[m_nFocusNo]->clearFocus();
    //m_nFocusNo操作
    showFocus();
  }
}

A::showFocus()
{
    m_pLineEdit[m_nFocusNo]->setFocus();
}
快速回复
限100 字节
 
上一个 下一个