Qt Key Pressevent Enter

Anu*_*dor 6 qt keypress qkeyevent

void LoginModle::keyPressEvent(QKeyEvent *event)
{
    qDebug() << event->key() << "\t" << Qt::Key_Enter << "\t" << QKeyEvent::Enter;
    if( event->key() == Qt::Key_Enter)
        OKButtonClicked();
    else
        QDialog::keyPressEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

这段代码非常简单,类LoginModle继承自QWidget.运行此代码,当我按下时Enter,它显示:

16777220     16777221    10
Run Code Online (Sandbox Code Playgroud)

这意味着我Enter的键盘是16777220,但在Qt中,它被定义为16777221.

我的系统是Elementary OS(Freya),它基于Ubuntu 14.04.

我的司机或者程序的错误是否有问题?

Tan*_*hur 8

输入Qt::Key_Enter的Enter键是数字键盘上的Enter键.您按下键盘上字母旁边的"Enter"键.这被称为Return键,其值由Qt::Key_Return,表示为16777220.

因此,为了支持两个按键,您可以修改if语句,如下所示:

if( (event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return))
        OKButtonClicked();
    else
        QDialog::keyPressEvent(event);
Run Code Online (Sandbox Code Playgroud)


tri*_*elt 5

16777220(十进制)= 1000004(十六进制),因此根据此列表,按下的键为“返回”。查看Wiki -Enter键在数字键盘中,您使用的键在Qt中称为“ Return key”。