首页| 论坛| 消息

标题:一个关于键盘事件问题
作者:hanb99
日期:2006-10-27 18:01
内容:

#include
#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键一样)。
现在的问题是如程序所写,这个功能无法实现(象注释那样就可以)。请那位大侠指点一下要如何做才能正确实现这个功能呢。
如果方便可以说一下是为什么吗?
另外如果我想屏掉系统的快捷键,让我定义的起作用要如何做呢?


#1 [mike 10-31 15:48]
试一下Key_Return
#2 [wangowen 10-31 16:37]
Enter和Tab这些情况应该是在keyPressEvent()之间被event()函数处理了。
#3 [wangowen 11-01 09:31]
对,Qt::Key_Enter对应的是小键盘的Enter而Qt::Key_Return对应的是大键盘的。
#4 [realwerw 11-14 16:44]
我以前是用老土的办法:
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->keyPressEvent(e);
//如果lineedit已经满足条件
//m_pLineEdit->clearFocus();
//m_nFocusNo操作
showFocus();
}
}
A::showFocus()
{
m_pLineEdit->setFocus();
}

回复 发表
主题 版块